业务需要,批量提取下PDF的文本,格式不格式无所谓。
安装
简单试了下,camelot
,感觉不太好,没成功,加上官网说主要是提取表格,就先放弃了。
然后试了试pdfplumber
,发现也不好用,简单的一个PDF居然也识别不全,放弃。
试试pdfminer
吧,发现pdfminer3k
也不好用,使用时老报一个连谷歌都搜不到的错误cannot import name "'DecipherCallable'"
。只能卸载,换成pdfminer.six
。
pip install pdfminer.six
发现也不能用,与就把代码从https://github.com/pdfminer/pdfminer.six拖下来,本地安装:
python setup.py install
终于可以了。
import pdfminer
print(pdfminer.__version__)
显示20211012
。提一下,如果需要安装opencv
,且遇到问题,可以试试降版本:
pip3 install opencv-python==4.4.0.46
使用
最简单的:
from pdfminer.high_level import extract_text
text = extract_text('mypdf.pdf')
是可以提取文本的。还可以用这段代码:
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
output_string = StringIO()
with open('mypdf.pdf', 'rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
print(output_string.getvalue())
可以保留一些格式,也支持中文。
问题
有一些pdf发现全部乱码了,按说CJK
的支持也安装了,存成文件也不行,不知道啥原因,暂未解决。不过我后来使用了一些其它工具进行转换,发现也是乱码,也就释然了。可能某些pdf就是不让转吧。
另外,这个库是无法识别图片上的文字的,It cannot recognize text drawn as images that would require optical character recognition
。那还用什么opencv
?看来只能调用AI了。
网友评论