Насколько я знаю, у Tesseract пока нет правильной сегментации изображения (или анализа документов, как его называют в коммерческих приложениях OCR). Как правило, перед выполнением OCR изображение разбивается на отдельные области, содержащие текст, картинки, штрих-коды, линии и так далее. Затем вы применяете OCR только к текстовым областям и не сталкиваетесь с проблемами, которые вы только что описали.
Более ранние версии Tesseract вообще не имели такой функциональности, и Tesseract предполагалось использовать только в качестве распознавателя строк или так называемого распознавателя на уровне поля, когда вы используете его для небольших фрагментов текста, вырезанных из более крупного изображения.
Я не следил полностью за тем, что было введено в 3.0, возможно, он уже частично там, но, очевидно, он не работает должным образом, как вы только что узнали.
Существует еще один проект с открытым исходным кодом - OCRopus, который подошел к этой проблеме в точности так, как я описал, - сначала Анализ документа (он же Сегментация), и только затем OCR. Их более ранние версии фактически использовали Tesseract для OCR после завершения этапа анализа. Но позже они представили свой собственный OCR (который все еще не очень хорош) и переместили поддержку плагина Tesseract в список приоритетов.
Вот что вы можете сделать для решения вашей проблемы:
- Если ваши изображения имеют очень типичную структуру, вы можете попытаться выполнить некоторую тупую сегментацию и вырезать текст из изображения самостоятельно, прежде чем передавать его в Tesseract. Однако, если вы ожидаете, что будет поддерживаться широкий спектр изображений, просто забудьте об этом.
- Вы можете проверить OCRopus и посмотреть, работает ли их сегментация для ваших изображений. Если да, то вы можете потратить некоторое время на совместную работу OCRopus + Tesseract.
- Что ж, если то, что вы делаете, не просто для развлечения и вы цените свое время, я бы порекомендовал подумать о реальном движке OCR, таком как ABBYY. Вы получите гораздо более высокую точность как сегментации, так и распознавания текста из коробки, и, конечно же, профессиональную поддержку клиентов.
Отказ от ответственности: я работаю на ABBYY