Python实现PDF内容抽取PyMuPDF
2021/10/13 17:16:28
本文主要是介绍Python实现PDF内容抽取PyMuPDF,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近需要把扫描的PDF转换成文本,试用了pdfminer,pypdf2等工具,解析图片的效果都不太好,用起来也比较麻烦,后来试用了PyMuPDF,相对其它工具,它最新版本屏蔽了更多细节,围绕Page进行操作,调用非常方便。除了PDF它还支持解析epub等电子书格式。
目前网上例程大多是只抽取图片,没有同时转换图片和文字,且因为旧版本API,大多已无法正常运行。本文将示例其用法。
安装
$ pip install pymupdf==1.18.19
如果提取找不到fiz.h,建议更新pip版本
$ pip3.6 install --upgrade pip
例程
def parse(inpath, outpath): remove(TMPDIR) # 清除临时目录 os.mkdir(TMPDIR) remove(outpath) # 清除输出文件 t0 = time.clock() doc = fitz.open(inpath) lenXREF = doc.xrefLength() print("文件名:{}, 页数: {}, 对象: {}".format(inpath, len(doc), lenXREF - 1)) imgcount = 0 for i,page in enumerate(doc): t1 = time.clock() # 文字 text = page.get_text() if len(text) > 0: write_file(outpath, text, 'a') # 图片 imglist = page.get_images() # 解析该页中图片 for item in imglist: xref = item[0] pix = fitz.Pixmap(doc, xref) new_name = "{}.png".format(imgcount) # 如果pix.n<5,可以直接存为PNG path = os.path.join(TMPDIR, new_name) if pix.n < 5: pix.writePNG(path) # 否则先转换CMYK else: pix0 = fitz.Pixmap(fitz.csRGB, pix) pix0.writePNG(path) pix0 = None pix = None if OCR_ONLINE: text = img_to_str_baidu(path) else: text = img_to_str_tesseract(path) print("img->text", text) write_file(outpath, text, 'a') write_file(outpath, '\n' + '-----------' + '\n', 'a') imgcount += 1 print("page {} 运行时间:{}s".format(i, {t1 - t0}))
完整例程请见参考部分
参考
帮助文档 https://pymupdf.readthedocs.io/en/latest/tutorial.html
源码地址 https://github.com/pymupdf/PyMuPDF
完整例程 https://github.com/xieyan0811/pdfconv.git
这篇关于Python实现PDF内容抽取PyMuPDF的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享
- 2024-11-06Python 基础编程入门教程
- 2024-11-05Python编程基础:变量与类型