python 提取pdf文本,python pdf修改

  python 提取pdf文本,python pdf修改

  虽然你可能需要从一个或多个PDF文件中提取图片,在线网站上实现可能会导致图片泄露,手动操作比较麻烦,但在Python中其实很容易做到。

  今天我想和系统分享几个提取PDF图片的Python方法。其实没有完美的方法,任何一种方法的提取效率都不是100%,可以考虑各种方法来补充。主要包括两种提取图像的方法:基于规则搜索的fitz库和pdf2image库。

  基于fitz库和常规搜索

  Fitz是pymupdf的子模块,您必须首先从命令行安装pymupdf。

  pip安装pymupdf

  但是,请注意,您将使用import fitz导入模块进行导入。

  在下面的代码中,为了使用fitz库提取图像,您必须使图像元素正常匹配,将模板元素转换为像素,然后将其作为图像写入。

  导入fitz

  进口re

  导入操作系统

  file _ path=r c:\ XXX \ XXX . pdf # pdf文件路径

  Dir_path=rC:\xxx #用于存储图像的文件夹

  defPDF2image1(path,pic_path):

  checkIM=r /子类型?=*/Image(

  pdf=fitz.open(路径)

  lenXREF=pdf。_getXrefLength(

  计数=1

  forIinrange(1,lenXREF):

  text=pdf。_getxrefstring(I))

  isimage=re.search(checkim,text)))))))))))))).

  如果不是图像:

  继续

  pix=fitz.pixmap(pdf,I)).

  new_name=fimg_{count}。巴布亚新几内亚

  pix . write png(OS . path . join)pic _ path,new_name))

  计数=1

  pix=无

  PDF2image1(文件路径,目录路径))))))))))))).

  执行样本文件提取的结果如下:

  你可以看到,一些小色块也被提取为图像。你如何过滤它们?

  有一个简单的方法,按大小过滤。Pixel在fitz库中有一个重要的方法。Pix.size反映像素的数量。简单色素块的这个值很低,设置一个阈值就可以过滤掉。以阈值10000为例进行筛选:

  导入fitz

  进口re

  导入操作系统

  file _ path=r c:\ XXX \ XXX . pdf # pdf文件路径

  Dir_path=rC:\xxx #用于存储图像的文件夹

  defPDF2image1(path,pic_path):

  checkIM=r /子类型?=*/Image(

  pdf=fitz.open(路径)

  lenXREF=pdf。_getXrefLength(

  计数=1

  forIinrange(1,lenXREF):

  text=pdf。_getxrefstring(I))

  isimage=re.search(checkim,text)))))))))))))).

  如果不是图像:

  继续

  pix=fitz.pixmap(pdf,I)).

  如果pix.size 10000: #这里加个地方判断一个周期

  如果continue #不匹配阈值,请跳下来。

  new_name=fimg_{count}。巴布亚新几内亚

  pix . write png(OS . path . join)pic _ path,new_name))

  计数=1

  pix=无

  PDF2image1(文件路径,目录路径))))))))))))).

  你会发现所有的图像都被正常提取了!

  基于pdf 2图像库的两种方法

  你可以从这个库的名字看出它的用处。官方文件是https://www.cn python.com/pypi/pdf 2图像。

  虽然可以在pip install pdf2image中轻松安装,但实际上poppler是一个可以正常工作的转换器,所以需要额外的安装和配置。Windows用户必须安装poppler for Windows和poppler for Mac才能将jqdty/folder添加到PATH Mac用户。

  具体功能代码在官方文档中也有详细描述:

  所以,我们分别试试这两种方法。

  来自pdf 2 imageimportconvert _ from _ path,convert_from_bytes

  导入模板

  来自pdf 2 image . exceptionsimportpdfinfonotinstallederror、PDFPageCountError、PDFSyntaxError

  导入操作系统

  file _ path=r c:\ XXX \ XXX . pdf # pdf文件路径

  Dir_path=rC:\xxx #用于存储图像的文件夹

  efPDF2image2(文件路径,目录路径) :

  images=convert _ from _ path(文件路径,dpi=200).

  对于图像中的图像:

  ifnotOS.path.exists(dir_path):

  OS.makedirs(目录路径)).

  image . save(file _ pathf \ img _ { images . index)image)}。png , PNG ))

  PDF2image2(文件路径,目录路径))))))))))))).

  图像提取成功。尝试第二种方法:

  来自pdf 2 image import convert _ from _ path,convert_from_bytes

  导入模板

  来自pdf 2 image . exceptionsimportpdfinfonotinstallederror、PDFPageCountError、PDFSyntaxError

  导入操作系统

  file _ path=r c:\ XXX \ XXX . pdf # pdf文件路径

  Dir_path=rC:\xxx #用于存储图像的文件夹

  efPDF2image3(文件路径,目录路径) :

  images=convert _ from _ bytes(open(file _ path, rb )。阅读) )

  对于图像中的图像:

  ifnotOS.path.exists(dir_path):

  OS.makedirs(目录路径)).

  image . save(file _ pathf \ img _ { images . index)image)}。png , PNG ))

  PDF2image3(文件路径,目录路径))))))))))))).

  结果和之前一样,PDF中的所有图片都会被提取出来!

  我想补充一下。核心方法covert _ from _ bytes包含很多参数,可以自己修改。几个通用参数总结如下。

  参数

  意义

  pdf _路径

  PDF路径

  (灰)点/英寸(扫描仪的清晰度参数)

  画质(针对学术杂志常见的300dpi)))))))))))))。

  输出_文件夹

  将生成的图像写入文件夹,而不是直接写入内存。

  首页

  开始转换页面

  最后一页

  您想转换到哪一页?

  滤波多音

  图像格式。可以指定为png,默认值为ppm。

  线程计数

  可以参与转换的线程数

  userpw

  PDF密码

  输出文件

  导出文件名

  波普勒_路径

  指定portlet的安装路径。如果您首先配置它,则不需要指定它。

  有趣的是,可以启动多个线程的thread_count参数可以大大提高转换速度,尤其是在PDF页面较多的情况下。有兴趣的读者可以试试。

  以上是python的三种方法从pdf中提取图片的细节。有关python从pdf中提取图像的信息,请参考免费Resources.com的其他相关文章。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • kotlon协程,深入理解kotlin协程pdf,一文彻底搞懂Kotlin中的协程
  • 深入解析C#(第4版),深入解析css pdf,深入解析contentWindow, contentDocument
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf,Java 反射机制原理与用法详解
  • ,,Java使用iTextPDF生成PDF文件的实现方法
  • ,,Python利用PyMuPDF实现PDF文件处理
  • 漫画算法小灰的算法之旅pdf,漫画算法2-小灰的算法进阶
  • devops和自动化运维实践 PDF,devops思想在运维方面的具体实践
  • pdf如何去除水印,pdf去水印的三种方法
  • 把a4的内容打印成a3小册子,a4的pdf文档如何打印成a3
  • nlp自然语言处理入门pdf,精通python自然语言处理 pdf
  • 容器docker基本操作,每天5分钟玩转docker容器技术 pdf
  • sklearn中文手册pdf下载,sklearn库模块及函数
  • 留言与评论(共有 条评论)
       
    验证码: