Как извлечь текст из PDF в Python 3.7.3 - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь извлечь текст из файла PDF, используя Python. Моя главная цель - я пытаюсь создать программу, которая читает выписку из банка и извлекает ее текст для обновления файла Excel, чтобы легко регистрировать ежемесячные расходы. Сейчас я сосредоточен только на извлечении текста из файла PDF, но я не знаю, как это сделать.

Какой сейчас самый лучший и самый простой способ извлечь текст из файла PDF в строку? Какую библиотеку лучше всего использовать сегодня и как я могу это сделать?

Я пытался использовать PyPDF2, но каждый раз, когда я пытаюсь извлечь текст с любой страницы с помощью extractText (), он возвращает пустые строки. Я пытался установить textract, но получаю ошибки, потому что мне нужно больше библиотек.

import PyPDF2

pdfFileObj = open("January2019.pdf", 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

pageObj = pdfReader.getPage(0)
print(pageObj.extractText())

При печати содержимого страницы печатается пустая строка

Ответы [ 4 ]

3 голосов
/ 19 апреля 2019

Использование тика сработало для меня!

from tika import parser

rawText = parser.from_file('January2019.pdf')

rawList = rawText['content'].splitlines()

Это позволило легко выделить отдельные строки в выписке по счету в список.

0 голосов
/ 25 апреля 2019
import pdftables_api
import os

c = pdftables_api.Client('MY-API-KEY')

file_path = "C:\\Users\\MyName\\Documents\\PDFTablesCode\\"

for file in os.listdir(file_path):
    if file.endswith(".pdf"):
        c.xlsx(os.path.join(file_path,file), file+'.xlsx')

Перейдите на https://pdftables.com, чтобы получить ключ API.

CSV, формат = CSV

XML, формат = xml

HTML, формат = html

XLSX, формат = xlsx-одиночный, формат = xlsx-кратный

0 голосов
/ 19 апреля 2019
import PyPDF2
pdf-file = open('January2019.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdf-file)
count = pdfReader.numPages
for i in range(count):
    page = pdfReader.getPage(i)
    print(page.extractText())
0 голосов
/ 19 апреля 2019

PyPDF2 не читает весь PDF правильно.Вы должны использовать этот код.

    import pdftotext

    pdfFileObj = open("January2019.pdf", 'rb')


    pdf = pdftotext.PDF(pdfFileObj)

    # Iterate over all the pages
    for page in pdf:
        print(page)
...