{"id":14293,"url":"\/distributions\/14293\/click?bit=1&hash=05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","hash":"05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438","buttonText":"","imageUuid":""}

Как я готовил шпаргалку на экзамен и попутно запилил сервис распознавания текста на фотках

Всем привет! 🖖 Я учусь на 3 курсе, и чтобы подготовить конспект-шпаргалку на экзамен, я за вечер создал лучший сервис для распознавания текста на фото.

Зачем нужен конспект, и причем тут программирование

Как и большинство изобретений, мое — продукт лени. Будучи студентом, я экзамены воспринимал как испытание не только моих знаний, но и моей хитрости.

На предстоящем экзамене были разрешены рукописные конспекты, которые кто-то готовил в течение всего полугодия. Но это не про меня, у меня таких не было. Переписывать от руки что-либо объемнее одного листа — совсем не для меня. Но и идти на экзамен без шпоры — опрометчиво и даже немного зазорно. Нужно было что-то придумать и желательно быстро.

Раз уж кто-то пишет с помощью нейросети дипломы, то найти сервис распознавания текста с фото — не проблема. Я так думал, но я ошибался. Я хотел, чтобы оно работало без багов, без ошибок и в два клика, но оно так не работало.

Раз никакой сервис мою задачу нормально не решил, я сказал себе: «Хочешь сделать хорошо — сделай сам».

Во мне проснулся Остап Бендер, который придумал комбинацию:

  1. Берем печатный текст;
  2. Превращаем в рукописный;
  3. Распечатываем;
  4. Используем на экзамене старательно написанный конспект.

Окей, нужно быстренько собрать софт, который преобразует фото распечатанного конспектом в документ, а затем заменит в документе шрифт на рукописный.

Уже тогда я понял, что решая свою задачу, я смогу запилить SaaS, который поможет другим и станет моей небольшой прибавкой к стипендии.

Как я превращал фотки печатных записей в свою тетрадку с рукописным конспектом

Я погуглил в Яндексе на тему каких-нибудь библиотек и готовых решений для распознавания текста на фото, на базе которых можно быстренько за вечер собрать нужный скрипт на Python. Я нашел идеальный вариант среди концептов у Яндекса и, как и думал, за вечер накидал простенький скрипт.

import requests import json import base64 import os # Функция для получения IAM-токена def get_iam_token(iam_url, oauth_token): json_data = { 'yandexPassportOauthToken': oauth_token } headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' } response = requests.post(iam_url, json=json_data, headers=headers) data = response.json() return data['iamToken'] # Функция для отправки запроса на анализ изображения def request_analyze(vision_url, iam_token, folder_id, image_data, mime_type): json_data = { 'folderId': folder_id, 'analyzeSpecs': [{ 'content': image_data, 'mime_type': str(mime_type), 'features': { 'type': 'TEXT_DETECTION', 'textDetectionConfig': { 'languageCodes': ['en', 'ru'] } } }] } headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + iam_token } response = requests.post(vision_url, json=json_data, headers=headers) return response.text oauth_token = 'fd3a7b52-7359-4dd9-ad40-b07098152df5' folder_id = 'c1mbjogp2fv2bt43b5of' iam_url = 'https://iam.api.cloud.yandex.net/iam/v1/tokens' vision_url = 'https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze' # Запрос пути к директории с фотографиями photo_directory = input('Введите путь к директории с фотографиями: ') # Проверка наличия указанной папки if not os.path.isdir(photo_directory): print('Указанная директория не существует.') exit() # Проверка наличия фотографий в указанной директории photo_files = [f for f in os.listdir(photo_directory) if f.endswith('.jpg') or f.endswith('.png')] if not photo_files: print('В указанной директории отсутствуют фотографии.') exit() result_text = '' # Строка для сохранения распознанного текста for filename in photo_files: photo_path = os.path.join(photo_directory, filename) iam_token = get_iam_token(iam_url, oauth_token) with open(photo_path, 'rb') as file: image_data = base64.b64encode(file.read()).decode('utf-8') response_text = request_analyze(vision_url, iam_token, folder_id, image_data, 'image/jpeg') response_data = json.loads(response_text) if 'languages' in response_text: # Проверка наличия распознанного текста в ответе от API # Получение текста из json ответа от API. Сборка этого текста в удобный для чтения вид. text = '' for block in response_data['results'][0]['results'][0]['textDetection']['pages'][0]['blocks']: for line in block['lines']: for word in line['words']: text += word['text'] + ' ' text += '\n' result_text += text + '\n\n' # Запись распознанного текста в файл with open('output.txt', 'w') as output_file: output_file.write(result_text)

Если среди читателей есть программисты или просто уверенные пользователи ПК, можете потыкаться в скрипт.

После того, как я натравил скрипт на фотки и получил текстовый документ, я принялся за «написание» конспекта.

Я нашел и скачал шаблон для создания рукописного шрифта. Знаю, что можно было не париться и скачать сразу готовый шрифт, но меня затянула игра в имитацию.

Так я накалякал буквы в шаблоне

После того, как шаблон заполнен, я сгенерировал файл шрифта, установил его и применил к документу с распознанным текстом.

На глаз подбираем размер шрифта, подкладываем фон в клеточку и вуаля: можно отправлять документ на печать.

Итоговый документ со шпаргалкой перед печатью

После печати оставалось только продырявить листы и вставить их в тетрадь. Это же конспект, который я вел полгода.

Вот так моя шпаргалка выглядела в тетради

На следующий день я пришел в университет, решив провести на большом перерыве небольшой опрос среди друзей: половина сразу увидела в моей тетради распечатку, а половина ничего не заподозрила.

В час икс интуиция подсказала мне сесть куда-нибудь на галерку и не отсвечивать. Я так и сделал и сдал экзамен. Этим все могло закончиться, но нет.

Как я превратил свой скрипт для создания шпаргалки в онлайн-сервис

Через несколько дней я отошёл от стресса, привел потрёпанные нервы в порядок, после чего приступил к более основательному обдумыванию возникшей идеи.

Главным мотиватором не забить на это всё стала простая мысль: раз такой функционал так понадобился мне, вполне возможно, что он понадобится и еще кому-то. Таким образом было положено начало проекта.

Как это обычно бывает, одного желания «сделать красиво» было недостаточно. Слепленный на коленке Python скрипт понятное дело не очень подходил на роль полноценного сервиса: требовалось придумать и сверстать красивый сайт, написать нормальный код для клиентской и серверной части, прикрутить оплату, а потом ещё и не забыть протестировать работоспособность всего получившегося.

В общей сложности весь процесс от задумки до конечного продукта занял у меня около месяца.

Кому и как будет полезно

Если вы студент, фоткайте все, что на лекции выводится проектором и потом в два клика получайте конспект в виде текстового файла. Так вы сможете сосредоточиться на усвоении материала, а не на его конспектировании. Можно сфоткать страницу учебника или книги, чтобы моментально превратить ее в шпаргалку.

Во время тестирования в полевых условиях был выявлен ещё один крайне полезный кейс применения. Если вам понадобится быстро что-нибудь найти, например в книге (небольшого или среднего размера) , то просто сфотографируйте нужные развороты, загрузите фотографии на сервис и уже через +- 5 секунд у вас будет текст, по которому можно быстро и удобно производить поиск нужной информации.

Лично мне такой подход позволил сэкономить часы чтения скучных нафталиновых методичек.

К сожалению, мой сервис, как и все прочие OCR-сервисы, не умеет с приемлемой точностью распознавать рукописный шрифт. У меня такой задачи не стояло: мне было нужно обратное — я хотел имитировать рукописный шрифт на выходе, имея фото с печатным текстом на входе.

Можно распознавать и фото, и PDF. Нет рекламы и низкие цены. Ну и 5 бесплатных страниц сразу после регистрации — этого вполне хватит, чтобы убедиться, что все распознается точно и без белиберды.

Какие есть аналоги, и почему они мне не нравятся

Вероятно, вы думаете:

Ну придумал ты, как из текстового документа сделать имитацию конспекта, используя подмену на рукописный шрифт, но зачем тебе собственный сервис распознавания? Их же полно.

Да, таких сервисов полно, но мне они решительно не нравятся.

Там везде рекламы столько, что ощущение, как от растяжек на московских улицах во времена Лужкова. Мне хочется зайти на сайт, заплатить небольшую копеечку, получить услугу и не портить глаза баннерами и сниппетами.

Тут даже блок подписки выглядит, как рекламный баннер, а сами рекламные баннеры не грузятся

Вот так выглядит форма на моем сайте:

Не надо ничего нажимать, выбирать или читать — перетащил файл и все

Кажется, что мой сайт решит задачу быстрее, чем пользователь сможет найти нужную кнопку у конкурента.

Низкое качество распознавания

Хвалиться на словах не буду, просто покажу, как с распознаванием справляется мой сервис.

Вот так выглядит текст на фото:

Фото с одной из лекций

Никаких подтасовок. Это изображение я прогнал через распознавание на своем сайте и на сайтах конкурентов. Можете сами проверить разницу в качестве.

Вот так этот же текст распознается сервисом:

Скриншот распознавания с моего сайта

Высокие цены

Конечно, мой сервис немного дороже бесплатных аналогов, но у конкурентов просто грабительские тарифы.

Тарифы конкурентов:

Мои тарифы:

За распознавание 100 страниц я беру 1,8₽ за страницу, а они — почти 8₽.

Я считаю, что у меня получилась гибкая и одновременно понятная тарифная сетка: если ты студент и тебе нужно фоткать лекции, бери пакет на 75 распознаваний, а если много работаешь с текстом, бери пакет на 100 или больше и цена будет ниже.

Если считаете, что цены не оптимальны, я открыт к критике и предложениям.

Спасибо, что дочитали!

Зарегистрируйтесь на Kurion. app и распознавайте 5 первых файлов бесплатно.

Если есть вопросы или предложения по улучшению — пишите в комменты, буду безмерно рад и с радостью отвечу на любые вопросы. И буду рад, если расскажете, какие изобретательные способы списывания и сдачи экзамена использовали вы или ваши знакомые.

0
57 комментариев
Написать комментарий...
The Monstah

Занимательная статья! Классный и полезный продукт получился. Даже не верится (в хорошем смысле), что получилось за вечер создать такое решение проблемы, респект 🤝

Ответить
Развернуть ветку
Евсей Новиков
Автор

Когда до экзамена на 50 вопросов остаётся всего два дня и не такое придумаешь. Лишь бы со стипендии не слететь)

Ответить
Развернуть ветку
Kid Samort

есть бесплатная альтернатива которую ты немного натянул на свой сервис "яндекс переводчик по фото", нужно просто найти кнопку "открыть как текст" тут тебе и перевод и форматирование текста с изображений и самое главное беспалтно останется только в вордик скопировать и шрифт накинуть, минус только каждую фотку отдельно но кто хочет бесплатно идеальный вариант

Ответить
Развернуть ветку
Kid Samort

так же гугл относительно недавно вернул всетаки в свой переводчик распознование текста с фото и его тоже можно конвертировать в редактируемый формат (но не так харош на русском как яндекс)

Ответить
Развернуть ветку
3 комментария
Alon Raven

Не знал, спасибо. Такая же фича есть у Майкрософта. А если уж рассматривать платные, то есть Адобе..

Ответить
Развернуть ветку
Gemma Warren

Какой у вас потрясающий слог написания текста, читать одно удовольствие 🫶🏼

Ответить
Развернуть ветку
Звенислав Николаевич

Типа таких фраз "софт, который преобразует фото распечатанного конспектом в документ"?

Ответить
Развернуть ветку
2 комментария
Евгений

Круто сделал! Надеюсь, мне когда-нибудь пригодится

Ответить
Развернуть ветку
Евсей Новиков
Автор

Буду стараться держать продукт на виду, но вы всё равно обязательно сделайте закладку в браузере, чтобы сайтик всегда был под рукой.
По моему опыту могу сказать, что никогда не знаешь, когда такая штука пригодится, но вот когда вдруг понадобится, может сэкономить уйму времени

Ответить
Развернуть ветку
Je1rei

Сравнение с бесплатными аналогами понравилось, а так - желаю развития в данной стезе и не только 🏋️‍♀️

Ответить
Развернуть ветку
Евсей Новиков
Автор

Благодарю за отзыв. Будем работать как говориться 💪

Ответить
Развернуть ветку
Саша Ещенко

Очень изобретательно)

Ответить
Развернуть ветку
Евсей Новиков
Автор

Благодарю за отзыв

Ответить
Развернуть ветку
Олег Викторович

Сервис удобный, быстрый, качественный. Спасибо. Предложение для развития сервиса, прикрутить нейросеть для распознавания текста с буквами разного цвета и шрифта. Визитки, буклеты, обложки книг.

Ответить
Развернуть ветку
Евсей Новиков
Автор

Олег, здравствуйте. Рад слышать, что вам понравился мой проект. Предложения толковые, если дело пойдет, обязательно буду двигаться в поле нейросеток.
В особенности хотелось бы поиграться с рукописным текстом. Такой сервис будет невероятно полезен и нужен.
Кстати, У Яндекса была очень интересная статья на на эту тему: https://habr.com/ru/amp/publications/712510/

Ответить
Развернуть ветку
2 комментария
OBOVSEM

Сколько человек уже воспользовались сервисом за деньги???

Ответить
Развернуть ветку
Евсей Новиков
Автор

Здравствуйте! Проект только третий день на белом свете. Попридержите коней. Я же не пираМММиду строю)
Нужно сначала рассказать пользователям что это такое и с чем его едят, а потом уже о деньгах думать

Ответить
Развернуть ветку
Алексей Булгаков

Жаль в мое время не было такого, все переписывал вручную

Ответить
Развернуть ветку
Евсей Новиков
Автор

Технологический прогресс служит на благо студенчества)

Ответить
Развернуть ветку
Кирилл Федоров

Занимательно
Довольно полезный продукт
Всех благ

Ответить
Развернуть ветку
Евсей Новиков
Автор

Кирилл, благодарю за положительный отзыв

Ответить
Развернуть ветку
Евсей Новиков
Автор

Дорогие читатели, давайте устроим небольшой⚡️интерактивчик⚡️

Оставляйте под этим комментарием интересные или просто забавные случаи связанное с вашей учёбой в универе. Автору самой интересной истории предоставлю жирный авторский лайк, а также 35 халявных распознаваний

Ответить
Развернуть ветку
Максим Лешманов

Простые ребята, которые создали что-то для своего комфорта, за ними, как я считаю - будущее!

Ответить
Развернуть ветку
Евсей Новиков
Автор

Алексей, здравствуйте! Рад слышать приятные слова. Премного благодарен

Ответить
Развернуть ветку
Евгения Ворон

Давно искала такую штуку. Красота)

Ответить
Развернуть ветку
Евсей Новиков
Автор

Евгения, добрый день! Рад слышать, что мои труды прошли не зря

Ответить
Развернуть ветку
Alon Raven

Майкрософт в помощь. У него всегда бесплатно было.

Ответить
Развернуть ветку
Илья Рыбаков

Экзамен без шпаргалок -это не экзамен😂

Ответить
Развернуть ветку
Евсей Новиков
Автор

Это БАЗА

Ответить
Развернуть ветку
OBOVSEM

А на чем сделан фронт??

Ответить
Развернуть ветку
Евсей Новиков
Автор

Абсолютно базовый стек: HTML + CSS + JavaScript. Для подобного рода задачи я считаю более чем достаточно

Ответить
Развернуть ветку
Артур Добряков

Так если я не ошибаюсь на телефонах есть функция распознавания текста

Ответить
Развернуть ветку
Евсей Новиков
Автор

Артур, здравствуйте! Да, действительно, на некоторых смартфонах сейчас есть такая функция, но проблема в том, что далеко не на всех.
В случае Android всё очень и очень по-разному, где-то распознавание текста на фото есть, а где-то нет. Ради интереса опросил знакомых и выяснил, что подобная функция есть в 1-2 из 10 случаев.
С другой стороны на Яблоках нужна как минимум 16 версия IOS, поэтому немалый пулл стареньких устройств отпадает.
Плюс остаётся ПК сегмент, на котором хоть и есть альтернативы, но я считаю, что они не осень подходят для рядовых пользователей.

Ответить
Развернуть ветку
Vladimir P

Как у вас с распознаванием рукописного текста? То, о чем вы пишете, это обычный OCR с веб мордой. Не повод для критики, но всё же. Что у вас там за библиотека под капотом?

На фото локальное распознавание в iOS для тех, кто не знал. Добавьте сюда копипаст по airdrop и получите результат без регистрации и смс.

Ответить
Развернуть ветку
Alon Raven

У Майкрософта тоже такая фишка есть. На андроид легко поставить.

Ответить
Развернуть ветку
3 комментария
Евсей Новиков
Автор

Владимир, здравствуйте. Про функцию Live text я писал вот в этом: https://vc.ru/762357?comment=6173881 комментарии. Действительно, если у Вас подходящий iOS девайс, то это отличный вариант, но позволю вставить свои 5 копеек и отмечу минусы такого подхода (ИМХО)

а) Многие пользуются Android, где (как и с любой фичей) всё очень фрагментированно. Поспрашивал знакомых и выяснил, что подобная функция есть у 1 из 10 человек
б) Описанный вами вариант не очень подходит для ПК как минимум тем, что для AirDrop нужен целый МАК
в) Не всем IOS пользователям доступен Live Text. На яблоке с обновлением ПО всё кратно лучше, но всё же такая группа пользователей есть

Я прекрасно понимаю, что мой сервис не находится на OCR поляне в гордом одиночестве, но всё же считаю, что Kurion.app является хорошей альтернативой.

Думаю, вы не будите спорить с тем, что всегда хорошо иметь выбор

Ответить
Развернуть ветку
2 комментария
Звенислав Николаевич
Но и идти на экзамен без шпоры

Шпоры и конспект это разные вещи, вместо того, чтобы стрельнуть шпоры у старшего курса или одногруппников, потратили время на переизобретение велосипедов, да еще и не самым прямым путем. PS. Не заметить тут распечатку – хз кем надо быть. И почему бы просто не отксерить чужой конспект?

Ответить
Развернуть ветку
Евсей Новиков
Автор

Звенислав, здравствуйте!
По сути, это не шпора, это был легальный к прононсу на экзамен конспект, который можно было свободно листать и что-то брать из него (об этом упоминается дальше в статье)

Ответить
Развернуть ветку
5 комментариев
Alon Raven

Итак. Для начала. Автор утверждает, что нет приложений, которые без багов преобразуют фото в текст. А потом находит такой в открытой библиотеке Яндекса... То есть автор прямо врёт.

Идём далее. А за шо, собственно, платить? Я вот могу взять приложение Майкрософта и оно даже корейский вытащит, что уж говорить про русский. Шрифт легко найти, они по-умолчанию в Ворде есть. Фон в клеточку вообще ужасно сделан, не подогнан под размер шрифта.

Ответить
Развернуть ветку
Евсей Новиков
Автор

Вот вы перед там, как обвинениями кидаться, хотя бы статью внимательно прочитайте или хотя бы мои ответы другим пользователям.
1) Вы же понимаете, что OCR SDK Яндекса это не готовое приложение? Попробуйте дать ссылку на доки Яндекса простому пользователю, например, вашей маме. Как думаете, какие будут результаты? Если она будет способна собрать полноценное приложение, то я готов лично пожать ей руку.

2) Платить предлагается за удобство, красоту и самое важное простоту. О проблемах решения от майков я уже развёрнуто писал (лично вам, а также другим читателям). Опять же, если вам кажется, что платить тут не за что, то kurion.app просто не для вас. Другие читатели нашли его полезным.

Надеюсь, что я достаточно развёрнуто ответил на ваши вопросы.

Ответить
Развернуть ветку
54 комментария
Раскрывать всегда