пытаясь вытащить определенную строку текста из PDF с Python - PullRequest
1 голос
/ 24 апреля 2019

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

Я просмотрел весь Интернет, но ничего не могу найти по этому поводу.

def pdf():
def extract_information(pdf_path):
    with open(pdf_path, 'rb') as f:
        pdf = PdfFileReader(f)
        information = pdf.getDocumentInfo()
        number_of_pages = pdf.getNumPages()

    txt = f"""
    Information about {pdf_path}: 

    Author: {information.author}
    Creator: {information.creator}
    Producer: {information.producer}
    Subject: {information.subject}
    Title: {information.title}
    Number of pages: {number_of_pages}
    """

    print(txt)
    return information

if __name__ == '__main__':
    path = input("What is the name of the pdf?(be sure to add .pdf to the end of the name) ")
    extract_information(path)

Я хочу получить номер счета из pdf.

1 Ответ

0 голосов
/ 24 апреля 2019

Возможно, вы захотите использовать для этого регулярное выражение. Я не знаю точный формат вашего PDF, но он должен выглядеть примерно так:

import re

pdfDocument = ''' somestuff
asdad
dasdd   Invoice Number: 678903    other stuff

rest of the stuff '''
str2 = re.search(r'Invoice Number: [0-9]*', pdfDocument)
str2 = str2.group(0)
print(str2)

Это вернет только строку «Номер счета: 678903». Возможно, вам придется настроить регулярное выражение соответственно. regexr - очень удобный инструмент для разработки регулярных выражений

EDIT:

Это больше относится к номеру счета-фактуры. Если у него есть какие-то специальные ключи, кроме десятичных цифр, вы должны настроить регулярное выражение. Я нашел один инструмент, который может найти значение на основе его местоположения в файле, но я никогда не использовал его, и я не знаю, будет ли он работать в вашем случае. Также я думаю, что вы должны заплатить за это. Кроме того, я не думаю, что доверял бы им достаточно для обработки моих конфиденциальных данных. docparser

Я думаю, что самый простой способ по-прежнему - анализировать pdf в тексте и искать с помощью regexp. Я понял, что, возможно, разбор PDF в TXT может быть проблематичным для вас. Я бы предложил использовать Тика для этого. Его легко установить, если у вас есть пункт:

pip3 install tika

Затем я сделал фиктивный PDF-документ с латексом и скрытым номером счета-фактуры: Dummy pdf

Вот код:

import re

from tika import parser

raw = parser.from_file('report.pdf')

pdfDocument = raw['content']

str2 = re.search(r'Invoice Number: [0-9]*', pdfDocument)
str2 = str2.group(0)
print(str2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...