1

Мне нужно разработать поисковую систему, основанную на частоте терминов в документе, у меня есть набор данных из 17000 PDF-документов. Можно ли подсчитать все слова и их вхождения в конкретном документе?

Пример: Вы хотели бы получить ответы на?

Вывод: будет = 1 вам = 1 нравится = 1 к = 2 ответа = 1

1 ответ1

3

Общая проблема get text from a PDF сложнее, чем кажется. После того, как вы решите эту проблему к своему удовлетворению, проблема сводится к определению частоты термина в куче текстовых файлов. Вы должны быть в состоянии реализовать это напрямую или получить совет по работе со стеком.

Чтобы получить текст из PDF, вы должны рассмотреть способ, которым данные структурированы в PDF.

"Текст" может быть любым из следующих в PDF:

  • Персонажи отображаются как изображения
  • Отдельные текстовые символы с разделительными элементами между ними (что может затруднить различие между "словами", потому что, как вы определяете, сколько места должно быть между словами, чтобы сделать его отдельным словом?)
  • Пролеты обычного текста
  • Динамический контент (HTML, ссылки, поля формы, видео и т.д.)

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

Следующие методы могут применяться для извлечения текста из PDF:

  • Использование технологии оптического распознавания символов (OCR) для просмотра окончательно отрендеренного PDF и извлечения текста из того, что "видит" программа OCR.
  • Использование инструментов, которые понимают низкоуровневую архитектуру документа PDF, для анализа логических элементов и определения того, какие из них составляют текст (этот метод сам по себе не сможет собрать текст из изображений, но может хорошо работать для простых документов, где все текст хранится как обычный текст или слегка отформатированный текст).
  • Использование проприетарных инструментов или инструментов с открытым исходным кодом, которые могут сделать комбинацию двух вышеупомянутых методов.

Итак, ваш подход должен выглядеть примерно так:

  • Определите, есть ли какие-либо общие черты во входных PDF-файлах, такие как постоянное присутствие (или отсутствие) текста, отображаемого в изображениях, чтобы определить объем ваших требований, с точки зрения того, какие методы извлечения вам нужно использовать. Если вам нужно работать с в общем случае любого входного PDF, то вы должны планировать на худшее , и предположим , что там будет текст в изображениях, и что вам нужно будет сделать OCR.
  • Исходя из ваших искаженных требований, определите, существует ли существующее программное обеспечение (проприетарное или открытое, или иное, в зависимости от ваших предпочтений), в котором реализована необходимая вам техника.
  • Из имеющегося программного обеспечения определите, какое проще всего интегрировать в среду / архитектуру программирования, которую вы используете для своей поисковой системы (это на C? Джава? .СЕТЬ? И так далее.)
  • Выясните, нужно ли вам выполнять какой-либо пользовательский "ручной" анализ или сканирование в дополнение к функциональности библиотеки. Вы можете сделать это, случайно выбрав небольшую партию PDF (скажем, 25) из своего стека; запустить алгоритм "PDF to text" на них; и вручную проверить, является ли извлеченный вывод точным. Если нет, вам, возможно, придется настроить библиотеки, реализующие методы, или создать свои собственные.
  • Если у вас есть функциональность PDF в текст, работающая к вашему удовлетворению, ваша проблема сводится к индексации частоты термина в текстовом виде. Для этого существует множество методов: от Map / Reduce (см. Hadoop) до баз данных и простого хранения хеш-карты в памяти. Техника, которую вы используете, будет зависеть от масштаба вашей программы; сколько оборудования можно на него бросить (один рабочий стол? кластер? большой сервер? мэйнфрейм?); и как часто вы должны выполнять работу (постоянно? по ночам? раз в год?).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .