Извлечь текст PDF без инструмента - PullRequest
0 голосов
/ 28 января 2019

В настоящее время я извлекаю текст PDF с помощью инструмента itextsharp (на VB.net).Я хотел бы быть независимым от других инструментов / библиотек, так как я не могу передать их другим в моей программе.

Существует ли решение (без .dll и т. Д.) На любом языке программирования для быстрого извлечения текстаPDF?

1 Ответ

0 голосов
/ 31 января 2019

Краткий ответ:

Конечно, есть способ сделать это. iText (наряду со многими другими библиотеками PDF) способны сделать это.Таким образом, существует алгоритм для извлечения текста.

Длинный ответ:

PDF не является форматом WYSIWYG.Документ PDF - это своего рода безбожный брак между «объектами, которые ссылаются друг на друга» и «языком программирования».

Позвольте мне объяснить.Документ PDF имеет графическое состояние.Поэтому, всякий раз, когда вы видите текст в документе PDF (в средстве просмотра, таком как Adobe Reader), вы, по сути, видите результат некоторого «кода» в документе PDF, который говорит:

Переходите к позиции 50, 720
Установите для активного шрифта значение Helvetica, размер шрифта 12
Установите для активного цвета рисунка черный
Нарисуйте глиф, соответствующий символу 'H'
Перейдите в положение 53, 720
Нарисуйтеглиф, соответствующий символу 'e'
и т. д.

Инструкции и ресурсы (например, шрифты, изображения, векторная графика) могут быть сгруппированы в объекты.

Каждый объектприсваивает номер и явно упоминается в таблице перекрестных ссылок (в конце документа PDF).

Итак, чтобы прочитать текст из документа PDF, вам необходимо:

  1. прочитать таблицу XREF
  2. выяснить, где (в байтовом положении) объекты \ page начинают
  3. анализировать объект \ page и все его подчиненные объекты (снова используя таблицу XREF)выяснить где в файле каждый из этих подобъектов:)
  4. синтаксический анализ геометрических инструкций (графическое состояние не должно течь в том же направлении, что и текст)
  5. сортировка всех видимых символов (сравнение фонаи цвет переднего плана, окклюзия другими объектами, такими как изображения и т. д.) в соответствии с направлением, в котором вы ожидаете, что текст будет записан в
  6. построение возвращаемой строки

И, вероятно, поэтомудругие люди используют библиотеки.Не поймите меня неправильно, я большой поклонник того, чтобы делать это самостоятельно (это лучший способ получить глубокие знания о том, как работают определенные вещи).

Но посмотрите на это с точки зренияодин из ваших пользователей.Что бы вы доверяли больше?

  • Программа, использующая «самописный» код для обработки документов PDF (общий опыт анализа документов PDF <1 год), * ​​1052 * <li>или программа, которая просто вызывает библиотеку PDF (общий опыт разбора PDF документов> 20 лет)
...