Тессеракт 4: есть ли максимальное разрешение, которое может иметь входное изображение при включенной сегментации страницы? - PullRequest
0 голосов
/ 13 июня 2019

Мой Java-проект имеет дело с OCRing PDF-файлов для их индексации.Каждая страница PDF преобразуется в png, который затем передается в тессеракт 4.

Для преобразования pdf-> png используется renderImageWithDPI из PDFBox PdfRenderer:

buffImage = pdfRenderer.renderImageWithDPI (currentPage,PNG_DENSITY, ImageType.GRAY);

с PNG_DENSITY = 300 в соответствии с рекомендациями в вики Тессеракта, чтобы получить наилучшие результаты.

Команда OCR:

Команда, используемая для tesseract:

tesseract input.png output -l fra --psm 1 --oem 1

Я также пробовал --psm 2 or 3, которая также включает сегментацию страницы, т.е.

1 Автоматическая сегментация страницы с помощью экранного меню.

2 Автоматическая сегментация страницы, но без OSD или OCR.

3 Полностью автоматическая сегментация страницы, но без OSD.(По умолчанию)

С отсканированным PDF (производитель / создатель Adobe Acrobat 7.0, который включает в себя защищенное авторским правом содержимое, поэтому я не могу поделиться им) из 146 страниц, tesseract делает бесконечные вычисления (процесс никогда не заканчивается) на заданной странице (85).

Поскольку тестирование было слишком долгим (то есть: подождите, пока страница 85 не будет распознана), я решил создать фрагмент этого PDF-файла с помощью функции печати в файл Evince.

Теперьpdf, созданный Evince (производитель / создатель - cairo 1.14.8), Tesseract успешно с ним справляется (т. е. изображение распознается).

Разница в разрешении изображения.Изображение с ошибкой составляет 4991x3508 пикселей, тогда как изображение с успехом составляет всего 3507x2480 пикселей.

Обратите внимание: tesseract в «Разреженный текст с помощью экранного меню» (т. Е. --Psm 12) обрабатывает страницу «успешно»хотя текст (в 2 столбцах) не понятен (то есть 2 столбца смешаны)

РЕДАКТИРОВАТЬ после нескольких проб и ошибок Похоже, что входное изображение должно иметьширина строго меньше 4000 пикселей для работы с сегментацией страницы.Глядя на исходный код Tesseract, в классе, называемом «pgedit», размер холста кажется ограниченным 4000 x 4000, поскольку конструктор «ScrollView» (для чего бы то ни было):

ScrollView::ScrollView(const char* name, int x_pos, int y_pos, int x_size,
                   int y_size, int x_canvas_size, int y_canvas_size, bool y_axis_reversed)

Так что мой вопросТеперь, почему существует ограничение в 4000 пикселей в ширину / высоту для использования сегментации страницы, и что я должен делать, если страница в формате PDF, преобразованная в png с разрешением 300 точек на дюйм, превышает 4000 пикселей (в ширину или в высоту или в обоих случаях)?

Любая помощь приветствуется,

...