Возвращать текстовую строку из физических координат в PDF с помощью Python

Я боролся с Google и ограниченной документацией PDFMiner в течение последних нескольких часов, и, хотя я чувствую себя близко, я просто не получаю то, что мне нужно. Я работал через http://www.unixuser.org/~euske/python/pdfminer/ и все три видеоролика YouTube, чтобы получить лучшее представление о файлах PDF, и я в состоянии выводить исходный текст просто отлично.

Я работаю над скриптом для разбора нескольких страниц PDF. К сожалению, для этого проекта я имею дело с файлами PDF низкого качества, и единственная надежная константа, которую я вижу, – это физическое расположение текстовых строк точно так же. Хотя я читал подсказки, что текстовые строки могут быть извлечены с помощью физических коордов, мне еще предстоит увидеть рабочий пример.

Есть ли кто-нибудь, кто может пролить свет на то, как это делается с помощью PDFMiner? Я открыт для других модулей, если есть очевидный лучший выбор, однако мне нужно придерживаться Python для скрипта.

Кроме того, я также попытался использовать PyPdf (кроме основного вывода текста).

Благодаря!

2 Solutions collect form web for “Возвращать текстовую строку из физических координат в PDF с помощью Python”

Мне удалось найти дорогу через pdfminer благодаря некоторому коду Дениса Папатанасиу. Код обсуждается в его блоге , и вы можете найти источник здесь: layout_scanner.py

В частности, взгляните на метод parse_lt_objs (). В последнем цикле k должна быть пара, содержащая координаты этого бита текста (и отбрасывается). У меня нет рабочего координатора для отправки здесь (меня это не интересовало), но похоже, что вам не составит труда найти свой путь оттуда.

Удачи вам!

Я писал библиотеку, чтобы попытаться упростить этот процесс, pdfquery . Чтобы извлечь текст из определенного места на определенной странице, выполните следующие действия:

pdf = pdfquery.PDFQuery(file) # load first, third, fourth pages pdf.load(0, 2, 3) # find text between 100 and 300 points from left bottom corner of first page text = pdf.pq('LTPage[page_index=0] :in_bbox("100,100,300,300")').text() # save tree as XML to try to figure out why the last line didn't work the way you expected :) pdf.tree.write(filename, pretty_print=True) 

Если вы хотите найти отдельные символы внутри этого поля, вместо текстовых строк целиком внутри этого поля, передайте merge_tags = None в PDFQuery (по умолчанию он объединяет последовательные символы в один элемент, чтобы сделать дерево менее смешным, поэтому вся строка будет иметь быть внутри коробки). Если вы хотите найти что-либо частично перекрывающее поле, используйте: overlaps_bbox вместо: in_bbox.

В основном это синтаксис синтаксиса PyQuery для захвата текста из макета PDFMiner, поэтому, если ваш документ слишком грязный для PDFMiner, он может быть слишком грязным для этого, но по крайней мере с ним будет быстрее играть.

  • Как вставить файл SVG в документ PDF?
  • Преобразование данных из PDFform в CSV
  • Использование PyPDF2 для объединения файлов в несколько выходных файлов
  • Получите предварительный просмотр JPEG PDF в Windows?
  • Относительное связывание файлов в PDF (Reportlab)
  • Errno 13 Разрешение отклонено в djnago-wkhtmltopdf
  • текстовые файлы PDF с Python?
  • Reportlab - как ввести разрыв строки, если абзац слишком длинный для строки
  •  
    Interesting Posts for Van-Lav

    Python Azure SDK: использование list_blobs для получения более 5.000 результатов

    библиотека python, чтобы найти контур изображения

    нанесение маркеров на топоры

    Является ли каталог Scripts анти-шаблоном в Python? Если да, то каков правильный способ импорта?

    Unpickling python2 datetime под python3

    Построение ориентированных графов в Python таким образом, чтобы показать все ребра отдельно

    как получить индекс numpy.random.choice? – python

    Python: проверьте, потеряно ли соединение IRC (PING PONG?)

    Как использовать valgrind с python?

    Как вы выражаете бинарные литералы в Python?

    Flask Template Не найден

    Пропустить unittest, если какое-либо условие в SetUpClass не выполняется

    TensorFlow в производстве для прогнозирования в реальном времени в приложении с высоким трафиком – как его использовать?

    Как я могу покрасить некоторые вещи в Emacs?

    Настройка пункта меню меню меню приложения Mac OSX, отличного от «Python» в моем приложении Qt python

    Python - лучший язык программирования в мире.