python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取
PDF是人们日常使用最多的跨平台文档。其是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。每个PDF文件包含固定布局的平面文档的完整描述,包括文本、字形、图形及其他需要显示的信息。具有良好的跨平台特性,但同时,也为抽取其内容带来了不便。
PDF最初版本于1993发行,最新版本为2.0。
今天,我们使得Python来抽取PDF文档中的文本与图片。
文本抽取
PDF文本抽取相对容易,效果最好的是pdfminer(https://github.com/euske/pdfminer)。基本能抽取出所有文本。
pdfminer是开源的纯Python编写,支持最新至PDF 1.7版本。
pdfminer的使用比较简单
安装:
pip install pdfminer
使用:
python pdf2txt.py -o -t text -O
如上就实现了文本抽取,抽取的是纯文本,无格式、字体等信息。
原文
抽取出的文本
pdfminer有个麻烦的地方,对于CJK编码的PDF文档,需要手动安装也能正常抽取文字。
图片抽取
PDF图片抽取是个比较难的问题,目前Python可以调用的比较好的库是PyMuPDF(https://github.com/pymupdf/PyMuPDF)。PyPDF2(https://github.com/mstamy2/PyPDF2)库也可以实现部分功能,但已于2018年停止更新。
这些库的问题是,无法抽取出所有的图片,同时,抽取出的图片问题不一。
使用PyMuPDF 代码如下:
import fitz # PyMuPDF
def get_pixmaps_in_pdf(pdf_filename):
doc = fitz.open(pdf_filename)
xrefs = set()
for page_index in range(doc.pageCount):
for image in doc.getPageImageList(page_index):
xrefs.add(image[0]) # Add XREFs to set so duplicates are ignored
pixmaps = [fitz.Pixmap(doc, xref) for xref in xrefs]
doc.close()
return pixmaps
def write_pixmaps_to_pngs(pixmaps):
for i, pixmap in enumerate(pixmaps):
pixmap.writePNG(f'{i}.png') # Might want to come up with a better name
pixmaps = get_pixmaps_in_pdf('Wang_et_al_2017_Tacotron.pdf')
write_pixmaps_to_pngs(pixmaps)
抽取效果如下。整篇PDF文档,只抽取出如下的几个图片。
比如,第二页的图片就无法抽取出来。
理想状态下,第6页的图片与示例应该合并一成一张图抽取出来,但实际上是分开抽取。
好的。Python抽取PDF文字与图片的介绍就到这里。
大家有更好的图片抽取工具或方法,欢迎留言贡献,
python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取相关推荐
- 通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本.图片.视频等文件 文章目录: 1 在服务器端开启一个服务 2 在本地浏览器中输入服务器的ip地址 1 在服务器端开启一个服务 python -m ...
- python提取pdf中的文字和图片_Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)...
PDF文件格式 如今,可移植文档格式(PDF)属于最常用的数据格式.在1990年,PDF文档的结构由Adobe定义.PDF格式的思想是,对于通信过程中涉及的双方(创建者,作者或发送者以及接收者)而言, ...
- python 批量下载网页图片_Python实现多线程批量下载图片
<派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 爬取图片可真的是一个可遇不可求的机会. 有需求就会动力. 目 ...
- 如何使用python批量压缩图片_python利用Guetzli批量压缩图片
Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...
- python生成10个随机数字符串_python生成随机数、随机字符串
python生成随机数.随机字符串 import random import string # 随机整数: print random.randint(1,50) # 随机选取0到100间的偶数: pr ...
- python处理pdf文件的程序_Python处理PDF文档-拆分合并
使用Python处理PDF文档.将需要处理的PDF文档与处理程序放到一个新建的文件夹中.运行程序. S模式,将单个PDF文档拆分到单页,并以数字命名. image.png C模式,合并文档,需要提前将 ...
- Python 生成圣诞树 Santa Tree Generator 不务正业系列#1
Python - Santa Tree Generator 环境 介绍 实现 方法一 思路 print 相关设置 格式分解 示例 相关设置值 代码 方法二 环境 OS: Windows 10 专业版 ...
- pdf文字大小及颜色用pdf修改软件怎么修改
在pdf文档中怎么修改文字的大小及颜色呢?相信这个问题困扰了不少朋友,那么小编今天就来为大家解答.下面请看:pdf文件怎么编辑文字大小及颜色的方法. 想要对pdf文件进行编辑,首先需要安装一个pdf编 ...
- java 去掉pdf文字_Java 添加和删除PDF图层
在PDF文档中,图层可以使部分内容选择性地被隐藏或显示.通过添加图层,我们可以将文本.图片.表格等元素精确定位于页面指定位置,并可将这些元素进行叠放.组合形成页面的最终效果.本文将介绍如何使用Spir ...
最新文章
- 光储充一体化充电站_【储能项目】深圳宝清240kW/500kWh光储充电站项目
- 深度学习100例 - 卷积神经网络(Inception V3)识别手语 | 第13天
- dotNetCharting使用总结
- 是否非要用interface关键字来实现接口?
- C# 操作IIS服务器Demo
- 枚举转中文,通过反射方法与描述的方式获取
- 《Java8实战》笔记(04):引入流
- 机器学习实现计算不规则图形面积_谷歌开源 TensorFlow Graphics:专为 3D 图像打造的深度学习利器...
- 设计灵感|延展画面的插画Banner设计!
- 通过方法将汉字转成拼音
- Filezilla server 使用教程
- SpringCloud 学习(二)-2 :Securing The Eureka Server
- 平衡二叉树(AVL)
- java 模板 word转pdf 可分页 带图片
- 如何组建权责明确、运营高效的数据团队
- java中的枚举与注解
- 乐优商城学习笔记十九-商品详情(二)
- 现在学习软件测试好找工作吗
- notepad++功能简介
- VUE学习(二十)、插槽