Мне нужно извлечь простой текст из загруженных документов, чтобы сделать их доступными для поиска. Документы могут быть MS Word или pdf (отсканированные или содержащие текст). Данное приложение работает в стеке LAMP, но установка другого программного обеспечения может быть вариантом. Есть ли какой-либо инструмент, служба, библиотека или комбинация тех, которые вы могли бы рекомендовать для выполнения этой задачи?Как извлечь/распознать текст из документов?
ответ
Вы можете использовать комбинацию оболочки утилит, как pdftotext
для PDF-файлов, wvWare
для КОХ, 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.
Сложная часть состоит в том, чтобы настроить все зависящие от ячейки банки и схему solr, а также выяснить параметры запроса индексирования, но все они могут быть продуманы в документации по вики. Here's мои банки и схемы, чтобы вы начали, соответствующая часть схемы - это строка, содержащая «привязанность».
Solr Cell не делает OCR, однако. Сначала вы должны использовать OCR Engine, чтобы сделать их доступными для поиска.
Для OCR вы можете использовать OpenSource Engine Tesseract, который разработан Google, или вы можете взглянуть на коммерческий движок Abbyy. Оба они используются как служебные utils, которые вы можете запускать из своих php-скриптов. Чтобы получить сопоставимые результаты от Tesseract как от Abbyy, вам нужно будет выполнить предварительную и постпроцессию 1. Есть также облачные сервисы, которые могут быть более легким вариантом. Например, Wisetrend и Abbyy Cloud. В настоящий момент последний находится в состоянии бета-тестирования, поэтому он бесплатный, и он готов к работе PHP code samples.
У Solr Cell есть OCR для извлечения текста из отсканированных PDF-файлов? – Tomato
Я совсем не уверен, но я думаю, что нет. Я считаю, что OCR должно быть сделано дальше по трубопроводу, и я слышал, что [tesseract] (http://code.google.com/p/tesseract-ocr/) - отличный бесплатный инструмент для этого. – clyfe
Тогда это просто не будет работать для отсканированных PDF-файлов. Они должны быть преобразованы сначала в PDF с возможностью поиска (с добавленным текстовым слоем) с помощью некоторого программного обеспечения OCR. – Tomato
Я не знаю ни одного программного обеспечения, которое преобразует 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, и я вытащу обычный текст из нового файла.
Примечание: возможно, более эффективно вводить файл через stdin, поэтому вам не нужно сначала сохранять его на диск. Если рассматриваемая uitility не предоставляет для этого переключатель cli, вы можете использовать/dev/stdin под Linux. – Maarten
Насколько я могу судить, с OCR на PHP мало что можно сделать. Лучшим решением будет использование облачного сервиса - веб-api, который позволяет загружать изображение и отправлять вам данные OCR. Попробуйте www.ocrsdk.com, это облачный OCR SDK, недавно запущенный ABBYY. Теперь он находится в бета-версии, поэтому он полностью свободен в использовании и имеет готовый к использованию PHP code samples.Disclamer: i work @ ABBYY
Интересно! Так как это только часть решения, однако, я отредактировал другой ответ вместо этого (редактирование все еще ожидает). Надеюсь, ты простишь меня. – Maarten
- 1. Как извлечь текст из документов MS Office в C#
- 2. Почему из отсканированных документов текст можно извлечь, но не изображение
- 3. Извлечь текст из нескольких документов Google в таблицу Google
- 4. Получение документов из библиотеки документов sharepoint 2010
- 5. Многократная печать документов из библиотеки документов?
- 6. ModX: getResources из документов и документов children
- 7. Как устранить дубликаты документов из списка документов в Web-методах?
- 8. Извлечение текста из текстовых документов
- 9. Как найти определенный текст в большой группе документов?
- 10. получить данные из документов
- 11. читать plist из документов
- 12. Сравнение документов - сходство документов
- 13. Как установить текст в заголовке, когда он использует прослушиватель документов?
- 14. Как вырезать текст при нахождении документов в мангусте?
- 15. Как читать информацию метаданных из документов docx?
- 16. Как запросить данные из 3-х документов?
- 17. Как загрузить данные из Документов Google
- 18. Как создать ZIP-файл из каталога документов?
- 19. Как эффективно взять элемент из потока документов?
- 20. Как объединить документы из вложенных документов?
- 21. ScrollView: как загрузить изображения из документов
- 22. Как переименовать файлы из каталога документов?
- 23. Cloudant: Как получить вложения из нескольких документов?
- 24. Как удалить элемент из документов массива MongoDB
- 25. Как получить список документов из Raven db
- 26. Keystonejs Как удалить несколько документов из коллекции?
- 27. Как создать XSD-файлы из M-документов?
- 28. Как lucene создает индексы из документов
- 29. Как извлечь частоту слов из матрицы документов?
- 30. Nativescript - как отображать изображение из каталога документов?
Для отсканированных документов думаю, вам понадобится немного [OCR] (http://en.wikipedia.org/wiki/Optical_character_recognition) – BoltClock
Извлечение текста из файлов .doc старого стиля серьезная боль. Они не должны быть легко разбираемыми. .docx несколько проще, поскольку они просто zip-файлы .xml по большей части. –
@BlotClock Я знаю. Я не упоминал об этом явно, потому что предположил, что это очевидно. – Maarten