Как извлечь текстовые и текстовые координаты из PDF-файла?

Я хочу извлечь все текстовые поля и текстовые поля из файла PDF.

Многие другие сообщения StackOverflow обращаются к различным решениям, чтобы попытаться извлечь весь текст упорядоченным образом, но мне потребовалось некоторое время, чтобы выяснить, как сделать промежуточный шаг для получения текстовых и текстовых местоположений.

Поэтому, как только я нашел это, я подумал, что стоит поместить здесь. Учитывая файл pdf, вывод должен выглядеть примерно так:

489, 41, "Signature" 500, 52, "b" 630, 202, "a_g_i_r" 

One Solution collect form web for “Как извлечь текстовые и текстовые координаты из PDF-файла?”

Новые линии преобразуются в символы подчеркивания в конечном выпуске. Это минимальное рабочее решение, которое я нашел.

 from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfpage import PDFPage from pdfminer.pdfpage import PDFTextExtractionNotAllowed from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter from pdfminer.pdfdevice import PDFDevice from pdfminer.layout import LAParams from pdfminer.converter import PDFPageAggregator import pdfminer # Open a PDF file. fp = open('/Users/me/Downloads/test.pdf', 'rb') # Create a PDF parser object associated with the file object. parser = PDFParser(fp) # Create a PDF document object that stores the document structure. # Password for initialization as 2nd parameter document = PDFDocument(parser) # Check if the document allows text extraction. If not, abort. if not document.is_extractable: raise PDFTextExtractionNotAllowed # Create a PDF resource manager object that stores shared resources. rsrcmgr = PDFResourceManager() # Create a PDF device object. device = PDFDevice(rsrcmgr) # BEGIN LAYOUT ANALYSIS # Set parameters for analysis. laparams = LAParams() # Create a PDF page aggregator object. device = PDFPageAggregator(rsrcmgr, laparams=laparams) # Create a PDF interpreter object. interpreter = PDFPageInterpreter(rsrcmgr, device) def parse_obj(lt_objs): # loop over the object list for obj in lt_objs: # if it's a textbox, print text and location if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal): print "%6d, %6d, %s" % (obj.bbox[0], obj.bbox[1], obj.get_text().replace('\n', '_')) # if it's a container, recurse elif isinstance(obj, pdfminer.layout.LTFigure): parse_obj(obj._objs) # loop over all pages in the document for page in PDFPage.create_pages(document): # read the page into a layout object interpreter.process_page(page) layout = device.get_result() # extract text from this object parse_obj(layout._objs) 
  • pdfminer3k не имеет метода с именем create_pages в PDFPage
  • python получает unicode от символа devnagari
  • PDF-файл не может быть извлечен шрифтом
  •  
    Interesting Posts for Van-Lav

    Scikit-learn: Как запустить KMeans на одномерном массиве?

    Как применять значения столбца по умолчанию перед фиксацией в sqlalchemy

    Настройка цветной темы vim для выделенных фигурных скобок

    Вставить двоичный файл в базу данных SQLite с помощью Python

    Максимальный размер типа данных «ТЕКСТ» в postgresql

    Matching Wand (ImageMagick) для функциональности CamanJS

    Установка OpenCV / python на Amazon Linux (apache)?

    Маркер URL-адреса флага: Маршрут Несколько URL-адресов для одной и той же функции

    Организация классов Python в модулях и / или пакетах

    приложение django-registration и пользовательская модель Django 1.5

    Как перенести обратно из начальной миграции в Django 1.7?

    Просмотр PDF для Python Tkinter

    Как протестировать или издеваться над содержимым «if __name__ == '__main__»

    Как развернуть / перенести существующее приложение / проект django на производственный сервер на Heroku?

    Как получить все экземпляры класса в текущем модуле

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