Какой лучший инструмент с открытым исходным кодом для анализа текстового содержимого из файлов, чтобы сделать его доступным для поиска?

Я хотел бы проанализировать текстовое содержимое из любого типа файла, чтобы сделать его доступным для поиска. Скажем, файл может быть .txt, .docx - файлы типа документа или это может быть изображение, аудио или видео файл.

Я мог найти Apache Tikaэто занятие. Есть ли альтернативный инструмент? Какой из них лучше всего подходит для парсера текста?

Может кто-нибудь пролить свет на это.

Ответы (1)

Поскольку ваш поиск уже нашел Apache Tika как лучшее решение, это связано с тем, что задача обработки данных из множества разных источников сложна, и это то, что Tika стремится решить. Чтобы было ясно, Apache Tika использует другие инструменты с открытым исходным кодом для фактического извлечения данных: например, Apache POI для извлечения данных из документов Word, и я думаю, что он может использовать PDFBox для извлечения текста из документов PDF.

Извлекать текст из документов Word или PDF-документов несложно, но вам нужно обрабатывать каждый случай, и для создания надежного способа управления этими другими инструментами потребуется воссоздать то, что представляет собой Apache Tika. Когда вы сталкиваетесь с более экзотическими типами документов (для которых нет синтаксического анализатора), Tika предоставляет интерфейсы для определения вашего собственного экстрактора и добавления его к набору документов, с которыми он может работать.

Таким образом, вы можете либо использовать тику, либо передать решение. Это говорит о том, что есть инструменты, которые расширяют tika и предоставляют универсальные функции поиска документов, чем Apache Solr. Apache Solr — это сервер, который обеспечивает функции синтаксического анализа и индексирования документов с использованием API-интерфейса restful (даже для подачи документов), под капотом он использует инфраструктуру Lucene. Если вы терпеть не можете работать через спокойный API и хотите работать непосредственно на Java, тогда используйте Lucene напрямую.