Розбір PDF за допомогою Python - вилучення відформатованих та простих текстів [закрито]


82

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

Я хотів би витягти текст із PDF-документа, виключаючи будь-які таблиці та спеціальне форматування. Чи існує там бібліотека, яка цим займається?

Відповіді:


61

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

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

Але проблему насправді вирішити непросто, оскільки в PDF текст не є суцільним, а складається з безлічі невеликих груп символів, розташованих абсолютно на сторінці. Основна увага PDF полягає в тому, щоб зберегти макет цілим. Це не орієнтоване на вміст, а на презентацію.


1
PDFMiner виглядає цікаво. Я можу використовувати вихідний файл XML з нього, а потім проаналізувати його, щоб проігнорувати те, що я не хочу. Це все ще вимагає значної подальшої обробки, але наразі це, мабуть, найкраще рішення. Дякую.
Mike Cialowicz

@Etienne, чи можна це використовувати, якщо PDF також має інші мовні символи?
Sahil Mittal

Він повинен працювати з іншими мовними символами. Документи згадують: підтримуються мови CJK та сценарії вертикального написання. Найкращий спосіб бути впевненим, протестуйте!
Етьєн

1
Порт pdfminer.six Python 3 PDFMiner добре працює для мене
Хаміш

1
Починаючи з версії 20191010, PDFMiner підтримує лише Python 3
фантастичний

0

Цю проблему важко вирішити, оскільки візуально подібні PDF-файли можуть мати надзвичайно різну структуру залежно від способу їх створення. У гіршому випадку бібліотеці потрібно було б діяти як OCR. З іншого боку, PDF може містити достатню структуру та метадані для легкого видалення таблиць та рисунків, для чого бібліотека може бути адаптована.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.