我已经尝试了pyPdf和pdfMiner来从pdf文件中提取文本.我有一些不友好的pdf,只有pdfMiner才能成功提取.我在这里使用代码来提取整个文件的文本.但是,我真的想在每页基础上提取文本,就像getPage(i).extractText()pyPdf中的功能一样.有谁知道如何使用pdfMiner提取每页文本?
for pageNumber, page in enumerate(PDFDocument.get_pages()):
if pageNumber == 42:
#do something with the page
Run Code Online (Sandbox Code Playgroud)
有一个很好的文章在这里.
这是将所有页面写入单独文件的方式:
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替换为所需的页码即可。
| 归档时间: |
|
| 查看次数: |
12252 次 |
| 最近记录: |