使用Python pdfMiner每页提取文本?

8 python pdf

我已经尝试了pyPdf和pdfMiner来从pdf文件中提取文本.我有一些不友好的pdf,只有pdfMiner才能成功提取.我在这里使用代码来提取整个文件的文本.但是,我真的想在每页基础上提取文本,就像getPage(i).extractText()pyPdf中的功能一样.有谁知道如何使用pdfMiner提取每页文本?

Joh*_*ohn 6

for pageNumber, page in enumerate(PDFDocument.get_pages()):
    if pageNumber == 42:
        #do something with the page
Run Code Online (Sandbox Code Playgroud)

有一个很好的文章在这里.

  • 有人可以详细说明一下吗?我在 pdfminer 周围遇到了很大的麻烦,因为根本没有文档。 (2认同)

The*_*123 5

这是将所有页面写入单独文件的方式:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
import io
import os

fp = open('Files/Company_list/0010/pdf_files/testfile3.pdf', 'rb')
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
print(type(retstr))
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)

page_no = 0
for pageNumber, page in enumerate(PDFPage.get_pages(fp)):
    if pageNumber == page_no:
        interpreter.process_page(page)

        data = retstr.getvalue()

        with open(os.path.join('Files/Company_list/0010/text_parsed/2017AR', f'pdf page {page_no}.txt'), 'wb') as file:
            file.write(data.encode('utf-8'))
        data = ''
        retstr.truncate(0)
        retstr.seek(0)

    page_no += 1
Run Code Online (Sandbox Code Playgroud)

如果需要特定的页码,只需将page_no替换为所需的页码即可。