Как извлечь / распознать текст из документов? - PullRequest
4 голосов
/ 22 декабря 2011

Мне нужно извлечь простой текст из загруженных документов, чтобы сделать их доступными для поиска.Документы могут быть в формате MS Word или PDF (отсканированные или содержащие текст).Рассматриваемое приложение работает в стеке LAMP, но установка другого программного обеспечения может быть вариантом.Есть ли какой-нибудь инструмент, сервис, библиотека или комбинация тех, которые вы могли бы порекомендовать для выполнения этой задачи?

Ответы [ 3 ]

4 голосов
/ 23 декабря 2011

Вы можете использовать комбинацию утилит оболочки, таких как pdftotext для PDF, wvWare для DOC, docx2txt.pl для DOCX, как textractor rubygem.

# on Ubuntu
apt-get install wv xpdf-utils links

Есть также собственные классы php для извлечения PDF и docx .

Другой рубин, который даже делает за вас OCR, хотя Tesseract, это docsplit .

Возможно, было бы неплохо рассмотреть Solr для индексации и поиска. Вы можете использовать плагин Solr Cell для индексирования и поиска документов Word, PDF и других файлов. Я успешно использую его в одном из моих проектов. Solr Cell основан на нескольких проектах, таких как Apache POI , Tika и PDFBox .

Сложная задача - настроить все зависимые от ячейки схемы jar и solr, а также выяснить параметры запроса на индексирование, но все это можно понять из вики-документации. Вот моих jar-файлов и схемы, с которых вы можете начать, соответствующей частью схемы является строка, содержащая «attachment».

Однако Solr Cell не выполняет оптическое распознавание текста. Сначала вам нужно будет использовать OCR Engine, чтобы сделать их доступными для поиска.

Для распознавания текста вы можете использовать OpenSource Engine Tesseract, разработанный Google, или вы можете взглянуть на коммерческий движок Abbyy . Оба приходят как утилиты командной строки, которые вы можете запустить из ваших PHP-скриптов. Чтобы получить сопоставимые результаты от Tesseract и Abbyy, вам придется выполнить некоторую предварительную и последующую обработку 1 . Существуют также облачные сервисы, которые могут быть проще. Например, Wisetrend и Abbyy Cloud . Последний в настоящее время находится в бета-версии, поэтому он бесплатный и имеет готовые примеры кода PHP .

3 голосов
/ 23 декабря 2011

Насколько мне известно, с помощью OCR на PHP вы мало что можете сделать.Лучшим решением было бы использование облачного сервиса - веб-API, который позволяет вам загружать изображение и отправлять вам данные OCR.Попробуйте www.ocrsdk.com , это облачный OCR SDK, недавно выпущенный ABBYY.Сейчас он находится в бета-версии, поэтому он полностью бесплатен и имеет готовые примеры кода PHP .Отказ от ответственности: я работаю @ ABBYY

0 голосов
/ 23 декабря 2011

Я не знаю ни одного программного обеспечения, которое конвертирует PDF в текст, но для части MS Word вы можете использовать Apache POI: http://poi.apache.org/, который встроен в JAVA, поэтому вам придется выполнять двоичный файлиз вашего PHP-файла, чтобы заставить его работать.

Другой вариант - использовать JODConverter (который я сейчас использую для этой цели) http://code.google.com/p/jodconverter/ Так что, если Apache POI не работает, язнаю, что делает Jodconverter.Я использую бета-версию 3.0.

В своем PHP-коде я сохраняю загружаемый файл и выполняю двоичный файл конвертера для файла в каталоге tmp, который создаст новый файл в каталоге tmp иЯ вытащил простой текст из нового файла.

...