Распознавание с помощью tesseract-ocr [Delphi] Добрый вечер. Хочу использовать эту библиотеку для распознавания текста. Нашел компонент под Delphi Winsoft OCR. К сожалению он платный. Выяснил что он использует tesseract-ocr. Подскажите как его приспособить под Delphi, для дальнейшего использования? Так понимаю необходимо подключить dll и в него передавать параметры и получать назад. Кто подскажет? Вот страница проекта http://code.google.com/p/tesseract-ocr/
Подключи библеотку и объяви функции: PHP: BOOL APIENTRY DllMain (HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) TESSDLL_API void __cdecl TessDllRelease () TESSDLL_API void *__cdecl TessDllInit (const char *lang) TESSDLL_API int __cdecl TessDllBeginPageBPP (uinT32 xsize, uinT32 ysize, unsigned char *buf, uinT8 bpp) TESSDLL_API int __cdecl TessDllBeginPageLangBPP (uinT32 xsize, uinT32 ysize, unsigned char *buf, const char *lang, uinT8 bpp) TESSDLL_API int __cdecl TessDllBeginPageUprightBPP (uinT32 xsize, uinT32 ysize, unsigned char *buf, const char *lang, uinT8 bpp) TESSDLL_API int __cdecl TessDllBeginPage (uinT32 xsize, uinT32 ysize, unsigned char *buf) TESSDLL_API int __cdecl TessDllBeginPageLang (uinT32 xsize, uinT32 ysize, unsigned char *buf, const char *lang) TESSDLL_API int __cdecl TessDllBeginPageUpright (uinT32 xsize, uinT32 ysize, unsigned char *buf, const char *lang) TESSDLL_API void __cdecl TessDllEndPage (void) TESSDLL_API ETEXT_DESC *__cdecl TessDllRecognize_a_Block (uinT32 left, uinT32 right, uinT32 top, uinT32 bottom) TESSDLL_API ETEXT_DESC *__cdecl TessDllRecognize_all_Words (void) TESSDLL_API void __cdecl ReleaseRecognize () TESSDLL_API void *__cdecl InitRecognize () TESSDLL_API int __cdecl CreateRecognize (uinT32 xsize, uinT32 ysize, unsigned char *buf) TESSDLL_API ETEXT_DESC *__cdecl reconize_a_word (uinT32 left, uinT32 right, uinT32 top, uinT32 bottom) Далее используй, как описано в оф. мануале: http://code.google.com/p/tesseract-ocr/w/list http://code.google.com/p/tesseract-ocr/wiki/FAQ
Спасибо. Попробую ) Правда первый раз сталкиваюсь с подключением библиотек. Буду разбираться. Если у кого есть время подсказать подробнее буду оч благодарен.
Спасибо ) Почти все получилось. Вот только иногда путает 3 и 8, 7 и 1, 6 и 5 потому что цифры под разным углом и немного разным размером. Кто знает как выяснить угол поворота цифры и вернуть ее в правильное положение?
а можно более подробно об этом? я ни разу не подключал библиотеки. и если можно документацию на русском языке о tesseract-ocr (команды, операторы и так далее) перерыл кучу сайтов, но ничего не нашел
Добрый день. Нужно распознать текст с качественно сканированной книги (Каталога латинских названий), без искажений, RGB, преимущественно черно белый. Все знаки - латиница, но часто попадаются из немецкого, французского и испанского. Несколько шрифтов. Часто попадаются слова наклонным шрифтом, знаки в числах всегда на разной высоте, т.е. 069 - хвостики будут выше и ниже строки, такой стиль. Орфография преимущественно латынь, но почти все слова могут, по определению, не иметь никакого смысла, т.е. могут быть произвольным набором букв только подчиняющихся(и то не обязательно) правилам латинского языка. Т.е. заранее построить словарь всего массива текста нельзя. Целью распознавания является построение этого словаря. Объем большой, порядка 10000 страниц. Tesseract ошибается в первом же слове. Качество распознавания очень плохое. Очевидно, что он распознает не буква в букву, а ищет слова по словарю по максимальной вероятности. Вместо правильного маловероятного "Aaages" пишет более благозвучное и более вероятное "Anages", хотя символы видны достаточно четко. Хотя национальные символы он распознает правильно. Предполагаю, что если частично отключить ему "мозги", то он бы правильнее распознавал. 1. Посоветуйте, как заставить его распознавать текст буквально, а не гадать по вероятностям? Как повысить качество распознавания? Загрузить пример затрудняюсь. Для сравнения, online FineReader распознает почти всё правильно, но дорого для меня. 2. Не получается сделать вывод в PDF-текст, получается PDF-исходное-изображение
для этого нужно сеть обучать, но если всеже хочется выровнять символ то поворачиваешь его на от -(максимальный угол поворота) в градусах до +(максимальный угол поворота) ровным будет то изображение где будет наибольшая высота и наименьшая ширина, но это очень ресурсоемко.
FineReader можно и крякнутый скачать, не надо платить, тессеракт надо обучать, но это долго, лучше всего скачать крякнутый абби, а потом в ms word - нажать исправить все, он пройдется по словам и исправит, но не факт что всегда правильно
Мне нужна потоковая автоматизированная обработка, поэтому выбрал tesseract. Проблему частично решил, установив best версию tessdata_best. Сейчас предобработкой пытаюсь улучшить результат. Обсуждение вот здесь: https://www.linux.org.ru/forum/development/13692149?lastmod=1505905279127#comment-13695368