Подход к извлечению текста в PDF с использованием OCR
Кто-нибудь пытался извлечь текст из PDF с помощью библиотеки OCR и Java? Что вы считаете самой надежной библиотекой для извлечения текста. Большинство подходов, которые я видел (tesseract, GOCR), - это библиотеки C, которые требуют написания некоторого кода JNI.
Я знаком с pdfbox, который сейчас является проектом инкубатора Apache версии 0.8.x, но его извлечение текста не всегда точное. Я ищу альтернативный подход, который был бы несколько более надежным.
Я еще не пробовал Asprise JavaPDF в процессе этого, но хотел узнать больше о подходе OCR (если это возможно).
Любая помощь будет оценена.
4 ответа
Если у вас есть текстовый PDF, я настоятельно рекомендую PDFTextStream. Это не бесплатно, но лицензирование разумно, и это намного лучше, чем PDFBox. PDFBox душит многие PDF-файлы, созданные новыми инструментами, и не слишком согласован с PDF-файлами, которые он может обрабатывать. PDFTextStream обрабатывает любой PDF-файл, который я добавляю, включая PDF-файлы со встроенными изображениями PNG, чего не может сделать PDFBox.
Если вы добавите OCR к ребятам из PDFTextStream, они могут прослушать.
Мы используем ABBYY FineReader Engine 11. У них есть Java-оболочка.
Плюсы:
- Он прекрасно работает со всеми языками (английский, русский, узбекский и т. Д.) И выполняет настоящее распознавание текста (даже если у вас есть PDF без распознавания текста, они сначала выполняют визуализацию и распознавание текста).
Минусы:
Это стоит. Вы должны купить лицензию разработчика и конечного пользователя.
И это крайне медленно.
Вы можете использовать Java-оболочки Tesseract - tesjeract или Tess4J - для выполнения распознавания текста. Однако для PDF вам необходимо сначала преобразовать его в изображение (PNG или TIFF), прежде чем передавать его в механизм распознавания.
VietOCR вызывает Tesseract исполняемый файл для извлечения текста. Он использует GhostScript для преобразования PDF в изображения.
Если вы хотите извлечь OCR из текстового PDF-файла, вам, возможно, придется сначала преобразовать его в изображение.