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文本与图片抽取相关推荐

  1. 通过python建立一个web服务查看服务器上的文本、图片、视频等文件

    通过python建立一个web服务查看服务器上的文本.图片.视频等文件 文章目录: 1 在服务器端开启一个服务 2 在本地浏览器中输入服务器的ip地址 1 在服务器端开启一个服务 python -m ...

  2. python提取pdf中的文字和图片_Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)...

    PDF文件格式 如今,可移植文档格式(PDF)属于最常用的数据格式.在1990年,PDF文档的结构由Adobe定义.PDF格式的思想是,对于通信过程中涉及的双方(创建者,作者或发送者以及接收者)而言, ...

  3. python 批量下载网页图片_Python实现多线程批量下载图片

    <派森>(Python)3.13 win32 英文安装版 类型:编程工具大小:21M语言:英文 评分:8.7 标签: 立即下载 爬取图片可真的是一个可遇不可求的机会. 有需求就会动力. 目 ...

  4. 如何使用python批量压缩图片_python利用Guetzli批量压缩图片

    Google 又开源了,这次开源了一款图像算法工具 Guetzli.Guetzli,在瑞士德语中是"cookie(曲奇)"的意思,是一个针对数码图像和网页图像的 JPEG 编码器, ...

  5. python生成10个随机数字符串_python生成随机数、随机字符串

    python生成随机数.随机字符串 import random import string # 随机整数: print random.randint(1,50) # 随机选取0到100间的偶数: pr ...

  6. python处理pdf文件的程序_Python处理PDF文档-拆分合并

    使用Python处理PDF文档.将需要处理的PDF文档与处理程序放到一个新建的文件夹中.运行程序. S模式,将单个PDF文档拆分到单页,并以数字命名. image.png C模式,合并文档,需要提前将 ...

  7. Python 生成圣诞树 Santa Tree Generator 不务正业系列#1

    Python - Santa Tree Generator 环境 介绍 实现 方法一 思路 print 相关设置 格式分解 示例 相关设置值 代码 方法二 环境 OS: Windows 10 专业版 ...

  8. pdf文字大小及颜色用pdf修改软件怎么修改

    在pdf文档中怎么修改文字的大小及颜色呢?相信这个问题困扰了不少朋友,那么小编今天就来为大家解答.下面请看:pdf文件怎么编辑文字大小及颜色的方法. 想要对pdf文件进行编辑,首先需要安装一个pdf编 ...

  9. java 去掉pdf文字_Java 添加和删除PDF图层

    在PDF文档中,图层可以使部分内容选择性地被隐藏或显示.通过添加图层,我们可以将文本.图片.表格等元素精确定位于页面指定位置,并可将这些元素进行叠放.组合形成页面的最终效果.本文将介绍如何使用Spir ...

最新文章

  1. 光储充一体化充电站_【储能项目】深圳宝清240kW/500kWh光储充电站项目
  2. 深度学习100例 - 卷积神经网络(Inception V3)识别手语 | 第13天
  3. dotNetCharting使用总结
  4. 是否非要用interface关键字来实现接口?
  5. C# 操作IIS服务器Demo
  6. 枚举转中文,通过反射方法与描述的方式获取
  7. 《Java8实战》笔记(04):引入流
  8. 机器学习实现计算不规则图形面积_谷歌开源 TensorFlow Graphics:专为 3D 图像打造的深度学习利器...
  9. 设计灵感|延展画面的插画Banner设计!
  10. 通过方法将汉字转成拼音
  11. Filezilla server 使用教程
  12. SpringCloud 学习(二)-2 :Securing The Eureka Server
  13. 平衡二叉树(AVL)
  14. java 模板 word转pdf 可分页 带图片
  15. 如何组建权责明确、运营高效的数据团队
  16. java中的枚举与注解
  17. 乐优商城学习笔记十九-商品详情(二)
  18. 现在学习软件测试好找工作吗
  19. notepad++功能简介
  20. VUE学习(二十)、插槽

热门文章

  1. 集成redis,删除key报“srem“异常
  2. 神经网络如何训练数据,神经网络常用训练方法
  3. NTKO 文件在线编辑并保存 目前平台板plus支持 word excel ppt
  4. 大数据下的用户与价值分析
  5. docker 导致宿主机重启的解决方法
  6. 数据挖掘十大经典算法 整理
  7. 微信开发者工具官方版
  8. E430 win7 下安装黑苹果系统
  9. MySql版本号查看命令
  10. 明明没PS,看起来却像PS过的32张照片