Я использовал tesseract для преобразования документов в текст. Качество документов сильно колеблется, и я ищу советы о том, какая обработка изображений может улучшить результаты. Я заметил, что текст с высокой пикселизацией - например, сгенерированный факсимильными аппаратами - особенно трудно обрабатывать тессерактом - по-видимому, все эти неровные края символов смешивают алгоритмы распознавания формы.
Какие методы обработки изображений могут улучшить точность? Я использовал размытие по Гауссу, чтобы сгладить пиксельные изображения и увидел небольшое улучшение, но я надеюсь, что есть более специфическая техника, которая даст лучшие результаты. Скажем, фильтр, настроенный на черно-белые изображения, который сгладил бы неровные края, а затем фильтр, который увеличил бы контраст, чтобы сделать символы более четкими.
Какие-нибудь общие советы для тех, кто является новичком в обработке изображений?
источник
Я ни в коем случае не эксперт OCR. Но мне на этой неделе пришлось конвертировать текст из jpg.
Я начал с цветного, RGB 445x747 пикселей jpg. Я сразу попробовал тессеракт на этом, и программа почти ничего не конвертировала. Затем я вошел в GIMP и сделал следующее. image> mode> grayscale image> scale image> 1191x2000 пикселей фильтры> улучшение> нерезкая маска со значениями радиуса = 6,8, количество = 2,69, порог = 0 Затем я сохраняю как новый jpg с качеством 100%.
Затем Tesseract смог извлечь весь текст в файл .txt
Гимп твой друг.
источник
Три пункта для улучшения читабельности изображения: 1) Измените размер изображения с переменной высотой и шириной (умножьте 0,5 и 1 и 2 на высоту и ширину изображения). 2) Преобразуйте изображение в формат оттенков серого (черно-белый). 3) Уберите пиксели шума и сделайте их более четкими (Фильтруйте изображение).
Смотрите ниже код:
ВХОДНОЕ ИЗОБРАЖЕНИЕ
ВЫХОДНОЕ ИЗОБРАЖЕНИЕ
источник
Как правило, я использую следующие методы предварительной обработки изображений с использованием библиотеки OpenCV:
Изменение масштаба изображения (рекомендуется, если вы работаете с изображениями с разрешением менее 300 dpi):
Преобразование изображения в оттенки серого:
Применение расширения и эрозии для устранения шума (вы можете поиграть с размером ядра в зависимости от набора данных):
Применение размытия, которое можно выполнить с помощью одной из следующих строк (однако каждая из них имеет свои плюсы и минусы, однако медианное размытие и двусторонний фильтр обычно работают лучше, чем размытие по Гауссу.):
Недавно я написал довольно простое руководство по Tesseract, но оно должно позволить вам написать свой первый скрипт OCR и устранить некоторые препятствия, с которыми я столкнулся, когда все было не так ясно, как хотелось бы в документации.
Если вы хотите проверить их, я делюсь ссылками с вами:
Начало работы с Tesseract - Часть I: Введение
Начало работы с Tesseract - Часть II: Предварительная обработка изображений
источник
Это несколько лет назад, но все еще может быть полезным.
Мой опыт показывает, что иногда помогает изменение размера изображения в памяти перед передачей его в tesseract.
Попробуйте разные режимы интерполяции. Пост https://stackoverflow.com/a/4756906/146003 мне очень помог.
источник
На этом пути мне ОЧЕНЬ ПОЛЕЗНО помогли исходные коды проекта Capture2Text. http://sourceforge.net/projects/capture2text/files/Capture2Text/ .
Кстати: спасибо автору за то, что он поделился таким кропотливым алгоритмом.
Обратите особое внимание на файл Capture2Text \ SourceCode \ leptonica_util \ leptonica_util.c - в этом суть предварительной обработки изображения для этой утилиты.
Если вы запустите двоичные файлы, вы можете проверить преобразование изображения до / после процесса в папке Capture2Text \ Output \.
PS упомянутое решение использует Tesseract для OCR и Leptonica для предварительной обработки.
источник
Java-версия для кода Сатьяраджа выше:
источник
Документация Tesseract содержит некоторые подробные сведения о том, как улучшить качество распознавания текста с помощью этапов обработки изображений.
В некоторой степени Тессеракт автоматически применяет их. Также можно сказать Тессеракту написать промежуточное изображение для проверки, то есть проверить, насколько хорошо работает внутренняя обработка изображения (ищите
tessedit_write_images
в приведенной выше ссылке).Что еще более важно, новая нейросетевая система в Tesseract 4 дает намного лучшие результаты распознавания текста - в целом и особенно для изображений с некоторым шумом. Это включено с помощью
--oem 1
, например, в:(этот пример выбирает немецкий язык)
Таким образом, имеет смысл сначала проверить, насколько далеко вы продвинулись с новым режимом Tesseract LSTM, прежде чем применять некоторые пользовательские этапы предварительной обработки изображений.
источник
Адаптивный порог имеет важное значение, если освещение неравномерно по всему изображению. Моя предварительная обработка с использованием GraphicsMagic упоминается в этом посте: https://groups.google.com/forum/#!topic/tesseract-ocr/jONGSChLRv4
В GraphicsMagic также есть функция -lat для линейного адаптивного порога, которую я скоро опробую.
Другой метод порогового использования с использованием OpenCV описан здесь: http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_thresholding/py_thresholding.html
источник
Я сделал это, чтобы получить хорошие результаты из изображения, которое имеет не очень маленький текст.
И если все еще не получаются хорошие результаты, масштабируйте изображение до 150% или 200%.
источник
Чтение текста из графических документов с использованием любого механизма распознавания имеет много проблем, чтобы получить хорошую точность. Не существует фиксированного решения для всех случаев, но вот несколько вещей, которые следует учитывать для улучшения результатов распознавания.
1) Наличие шума из-за плохого качества изображения / нежелательных элементов / пятен в области фона. Это требует некоторых операций предварительной обработки, таких как удаление шума, которые могут быть легко выполнены с использованием гауссовского фильтра или методов обычного медианного фильтра. Они также доступны в OpenCV.
2) Неправильная ориентация изображения: из-за неправильной ориентации механизм распознавания не может правильно сегментировать строки и слова на изображении, что дает наихудшую точность.
3) Наличие строк: при выполнении сегментации слов или строк механизм OCR иногда также пытается объединить слова и строки вместе, обрабатывая, таким образом, неверный контент и, следовательно, давая неправильные результаты. Есть и другие проблемы, но это основные.
Это приложение после оптического распознавания символов является примером того, как для повышения точности распознавания можно применять некоторую предварительную обработку изображения и последующую обработку результатов OCR.
источник
Распознавание текста зависит от множества факторов для получения качественного вывода. Вывод оптического сигнала в значительной степени зависит от качества входного изображения. Вот почему каждый механизм OCR предоставляет рекомендации относительно качества входного изображения и его размера. Эти рекомендации помогают движку OCR получать точные результаты.
Я написал подробную статью об обработке изображений в Python. Пожалуйста, перейдите по ссылке ниже для более подробного объяснения. Также добавлен исходный код Python для реализации этого процесса.
Пожалуйста, напишите комментарий, если у вас есть предложение или лучшая идея по этой теме, чтобы улучшить его.
https://medium.com/cashify-engineering/improve-accuracy-of-ocr-using-image-preprocessing-8df29ec3a033
источник
вы можете сделать шумоподавление, а затем применить пороговое значение, но вы можете поэкспериментировать с конфигурацией OCR, изменив значения --psm и --oem
попробуй: --psm 5 --oem 2
Вы также можете посмотреть следующую ссылку для получения дополнительной информации здесь
источник