Анализ PDF с использованием Python - извлечение форматированного и простого текста [закрыто]

82

Я ищу библиотеку PDF, которая позволит мне извлекать текст из документа PDF. Я посмотрел на PyPDF, и он может очень хорошо извлекать текст из документа PDF. Проблема в том, что если в документе есть таблицы, текст в таблицах извлекается вместе с остальным текстом документа. Это может быть проблематично, потому что в результате получаются бесполезные разделы текста, которые выглядят искаженными (например, множество цифр смешиваются вместе).

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

Майк Чалович
источник

Ответы:

61

Вы также можете взглянуть на PDFMiner (или для более старых версий Python см. PDFMiner и PDFMiner ).

Особый интерес в PDFMiner заключается в том, что вы можете контролировать, как он перегруппирует текстовые части при их извлечении. Вы делаете это, указывая промежуток между строками, словами, символами и т. Д. Итак, возможно, настроив это, вы сможете добиться того, чего хотите (это зависит от изменчивости ваших документов). PDFMiner также может предоставить вам местоположение текста на странице, он может извлекать данные по идентификатору объекта и другим вещам. Так что копайтесь в PDFMiner и проявляйте изобретательность!

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

Этьен
источник
1
PDFMiner выглядит интересно. Я могу использовать вывод XML из него, а затем проанализировать его, чтобы игнорировать то, что мне не нужно. Это все еще требует значительной постобработки, но на данный момент это, вероятно, лучшее решение. Спасибо.
Майк Чалович,
@Etienne, можно ли это использовать, если в PDF-файле есть и другие языковые символы?
Sahil Mittal
Он должен работать с другими языковыми символами. В документации упоминается: поддержка языков CJK и вертикального письма. Лучший способ убедиться - протестируйте!
Etienne
1
Порт pdfminer.six Python 3 для PDFMiner у меня хорошо работает
Хэмиш
1
Начиная с версии 20191010, PDFMiner поддерживает только Python 3
фантастический
0

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

Я почти уверен, что не существует инструментов с открытым исходным кодом, которые решают вашу проблему для самых разных PDF-файлов, но я помню, что слышал о коммерческом программном обеспечении, которое заявляет, что делает именно то, что вы просите. Я уверен, что вы столкнетесь с ними при поиске в Google.

акайхола
источник