首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化pdfminer

优化pdfminer
EN

Stack Overflow用户
提问于 2017-08-03 02:20:51
回答 1查看 2.4K关注 0票数 4

我试图在生产上下文中使用pdfminer.six从pdf中提取文本。目前,对于我的基准44页文档,它大约需要18秒。我想尽量减少这方面的开支。

到目前为止,通过转动caching = False,我已经设法将时间缩短了3秒。有人对我如何进一步优化这个问题有建议吗?据我所知,使用像multiprocessing这样的模块来并行处理页面是行不通的,因为底层的方法/函数是不启用的。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2021-04-09 21:49:08

我在python3.8上使用pdfminer。我有一个处理pdf文档内容的应用程序,虽然组装单词/标记并确定它们在表格文档中的位置是一件相当繁重的工作,但在python2.7中,这一切都运行得很好,但是移到py3和pdfminer的最新版本时,它运行得太慢了,这是不可接受的。因此,经过大量的挖掘和分析我的代码,我发现由于来自旧版本的所有print语句都被转换为日志语句,pdfminer模块创建的记录器都默认为level.DEBUG,而且由于我已经为根记录器分配了处理程序来将日志消息写入文件,所以总体速度受到了很大的影响。购买,在pdfminer模块导入之后,在实例化任何类或调用它们之前添加以下代码,它现在运行得可以接受地快。

代码语言:javascript
复制
# set all pdfminer logging to WARN
pdflogs = [logging.getLogger(name) for name in logging.root.manager.loggerDict if name.startswith('pdfminer')]
for ll in pdflogs:
    ll.setLevel(logging.WARNING)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45473770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档