Часть II знакомства с Tess4J. Полный исходный код (Java SDK 1.8) и ссылка на приложение включены.

❝Цифровизация невозможна без оцифровки❞

Это утверждение становится все более верным по мере того, как все больше корпораций и государственных организаций принимают идею повышения эффективности обмена информацией и используют неотъемлемую ценность своих данных для конструктивной аналитики.

Одним из важнейших инструментов снижения накладных расходов на оцифровку является Оптическое распознавание символов (OCR) — преобразование графических носителей, таких как изображения, отсканированные документы и документы PDF. в машиночитаемые форматы. Поэтому я решил приступить к поиску возможностей использования популярного движка OCR с открытым исходным кодом — Tesseract-OCR.

Справочная информация о проекте

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





Однако совсем недавно я решил работать с Tess4J (Tesseract-OCR на Java) в качестве альтернативного средства использования OCR Engine Tesseract. В продолжение моей последней попытки использовать Tess4J для преобразования изображения в текст, эта (вторая) часть моего учебного путешествия должна вместо этого продемонстрировать встроенные компоненты Tess4J для извлечения текста из документов PDF. Более того, это также служит дополнением к более раннему прототипу, разработанному в Части I:



Создание функции извлечения текста PDF с помощью Tess4J

Предпосылки Шаги

Прежде чем углубляться в его техническую реализацию, убедитесь, что минимальная настройка для Java-приложения с Tesseract уже установлена. Все зависимости JAR точно такие же, как в Часть I.

Подробную информацию о том, как настроить проект Java-приложения с помощью Tesseract, см. в Часть I.

После этого проект Java должен выглядеть следующим образом:

Имя этого Java-проекта было указано как Tess4jOcrApp для простоты. Обратите внимание, что в приведенном выше желтом поле библиотеки: pdfbox-2.0.3.jar pdfbox-tools-2.0.3.jar fontbox-2.0.3.jar являются основными зависимостями, необходимыми для чтения и обработки страниц документа PDF модулем OCR.

(Примечание: flatlaf-2.4.jar является необязательным, поскольку это утилита для графического интерфейса Java Swing, а не зависимость OCR.)

Этапы технической реализации

Чтобы лучше соединить точки между Частью I и текущей реализацией, Часть II должна начинаться с того же шаблона кода, что и Часть I. как показано:

В то время как часть I демонстрирует извлечение текста только из изображения, часть II предназначена для чтения документа PDF и вместо этого вывода всего извлеченного текстового содержимого со своих страниц.

Шаг 1. После того, как путь к данным для экземпляра Tesseract установлен, перейдите к инициализации классов PDDocument и PDFRenderer:

PDDocument document = PDDocument.load(new File("sample.pdf"));
PDFRenderer pdfRenderer = new PDFRenderer(document);

Шаг 2.Получить значение общего количества. страниц в PDF, вызвав getNumberOfPages(), и приступайте к созданию цикла for, как показано:

int totalNoOfPages = document.getNumberOfPages();
int imageDPI = 300;
for (int p = 0; p < totalNoOfPages; p++) { // FOR-EACH PAGE

}

Важные замечания:

  • Идеальное разрешение для оптимальной работы Tesseract OCR — 300DPI — imageDPI
  • Метод doOCR(), вызываемый классом Tesseract, принимает различные типы параметров, такие как — File (в части I) и BufferedImage. На следующем этапе каждая страница PDF будет извлечена и преобразована в тип BufferedImage для извлечения данных.

Шаг 3.Наконец, после инициализации необходимых переменных из шага 1 и шага 2, класс PDFRenderer вызывает функцию renderImageWithDPI() для извлечения страницу документа в позиции p файла PDF. Тип возвращаемого значения дляrenderImageWithDPI()BufferedImage (имя переменной — tempPageBimg). Затем tempPageBimg преобразуется в doOCR(), после чего начинается обработка файла. После завершения извлечения OCR для этой страницы та же итерация должна выполняться для других страниц по отдельности, пока все текстовое содержимое из документа PDF не будет выведено для отображения.

К вашему сведению: вот полный фрагмент кода из всех трех шагов (исходный демонстрационный файл можно получить по адресу pdf_sample.pdf):

Наконец-то инструмент для извлечения PDF-файлов в текст успешно создан и готов к использованию! 🤩

(Необязательно) Пользовательский интерфейс для инструмента извлечения текста

Как и в части I, я решил создать Графический интерфейс пользователя (GUI) с помощью инструментария Java Swing GUI Toolkit, а также добавил функции части II:

К сведению:полный исходный код можно получить из моего репозитория Github по адресу Tess4JOcrApp. Обе версии 1 и 2 приложения с графическим интерфейсом доступны в одном и том же репозитории, поэтому не стесняйтесь ⭐ и 🔱!

И вот оно! Большое спасибо за упорство до конца этой статьи! ❤ Если вы нашли эту статью полезной, пожалуйста, не стесняйтесь следовать за мной на Medium и следите за новостями о моих других предстоящих проектах! Буду очень признателен — 😀

— 🌮 Пожалуйста, купи мне тако ξ(🎀˶❛◡❛)