【发布时间】:2018-01-10 10:37:15
【问题描述】:
我正在尝试在生产环境中使用 pdfminer.six 从 pdf 中提取文本。目前,对于我的 44 页基准文档,大约需要 18 秒。我想尽可能减少这种情况。
到目前为止,我已经通过转caching = False 将时间减少了 3 秒。有人对我如何进一步优化有建议吗?据我所知,使用像 multiprocessing 这样的模块来并行处理页面是行不通的,因为底层的方法/函数不能被腌制。
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
path = "PATH/TO/MYPDF.pdf"
rsrcmgr = PDFResourceManager()
retstr = io.StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams, showpageno= True)
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = None
caching = False
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
【问题讨论】:
-
你找到解决方案了吗?
-
@Taylor 我最终使用了一个名为
xpdf的 C++ 库(可以在 Mac 上使用brew安装,或者在 Linux 上通过名为poppler-utils的包访问),我通过我的 Python 脚本中的subprocess模块。以更快的速度有效地执行与pdfminer相同的任务 -
谢谢 - 我需要看看那个。我找到了一种通过使用
io.BytesIO来完成此操作的方法,但它仍然相当慢。我看看你的方法。再次感谢! -
@Edward Atkins 嘿,你能把代码示例作为答案吗?
-
apache tika 是我玩过的最快的库,但不幸的是它没有我需要的足够工具,但非常适合原始文本提取
标签: python python-3.x pdf optimization pdfminer