Как заставить тессеракт давать релевантные результаты при наличии шума? - PullRequest
3 голосов
/ 09 февраля 2011

Я использую tesseract 3.0.0 и столкнулся со следующей проблемой:

Когда есть что-то слишком маленькое, чтобы tesseract мог его распознать, кажется, что оно объединено с другими фрагментами.В результате ничего релевантного не возвращается.

На рисунке ниже показаны 3 случая.Только прямоугольник с пунктирной линией передается в тессеракт.Над прямоугольником результат (V над T означает новую строку).

Последний случай - это проблема.Есть ли способ улучшить тессеракт в подобных ситуациях?

enter image description here

1 Ответ

5 голосов
/ 10 февраля 2011

Насколько я знаю, у Tesseract пока нет правильной сегментации изображения (или анализа документов, как его называют в коммерческих приложениях OCR). Как правило, перед выполнением OCR изображение разбивается на отдельные области, содержащие текст, картинки, штрих-коды, линии и так далее. Затем вы применяете OCR только к текстовым областям и не сталкиваетесь с проблемами, которые вы только что описали.

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

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

Существует еще один проект с открытым исходным кодом - OCRopus, который подошел к этой проблеме в точности так, как я описал, - сначала Анализ документа (он же Сегментация), и только затем OCR. Их более ранние версии фактически использовали Tesseract для OCR после завершения этапа анализа. Но позже они представили свой собственный OCR (который все еще не очень хорош) и переместили поддержку плагина Tesseract в список приоритетов.

Вот что вы можете сделать для решения вашей проблемы:

  • Если ваши изображения имеют очень типичную структуру, вы можете попытаться выполнить некоторую тупую сегментацию и вырезать текст из изображения самостоятельно, прежде чем передавать его в Tesseract. Однако, если вы ожидаете, что будет поддерживаться широкий спектр изображений, просто забудьте об этом.
  • Вы можете проверить OCRopus и посмотреть, работает ли их сегментация для ваших изображений. Если да, то вы можете потратить некоторое время на совместную работу OCRopus + Tesseract.
  • Что ж, если то, что вы делаете, не просто для развлечения и вы цените свое время, я бы порекомендовал подумать о реальном движке OCR, таком как ABBYY. Вы получите гораздо более высокую точность как сегментации, так и распознавания текста из коробки, и, конечно же, профессиональную поддержку клиентов.

Отказ от ответственности: я работаю на ABBYY

...