用python提取pdf文字,扫描件提取文字Python

  用python提取pdf文字,扫描件提取文字Python

  转载:ZXDST chenx6542@foxmail.com(缩写:有一半是花酒)))))))))))))))))

  微信官方账号转载请联系微信官方账号:早起Python

  这个例子可以学到的知识点:

  使用pdf播放器从pdf中提取文本和表格

  使用fitz从PDF中提取图像

  批量PDF文件的处理之前已经详细解释过了。这包括合并、分割、水印和加密。处理批量PDF文件

  详细分析了各线路的原理。这里介绍了很多面向PDF的模块,有些功能不全,代码不如OFFICE三点操作简洁。

  今天的PDF图像提取也是如此。所以主要是基于理解,不需要完全掌握代码表示,只要能用就行。

  今天的练习资料是年报,里面有很多文字,表格,照片。

  一、模块安装

  需要安装两个模块。第一个是pdf播放器。

  在Windows上调用命令行:

  pip安装pdf木材

  第二个是fitz,是pymupdf的模块。

  在Windows上调用命令行:

  pip安装pymupdf

  二。PDF文本提取

  代码理念:

  在PDFplumber中打开pdf文件。

  获取指定的页面或遍历每个页面。

  使用。extract_text()方法提取当前页面的文本

  尝试使用上面的代码提取示例数据第12页上的字符。

  导入pdf播放器

  file _ path=r c:\ xxxx \ practice . pdf

  pdf格式的pdf lumber . open(file _ path ):

  page=pdf.pages[11]

  print(page.extract_text))

  可以导入python-docx,使用Wordfile.add_paragraph()将提取的内容写入word文件。

  三。PDF表单提取

  提取单个表格的代码与使用。提取_表格()。

  请注意。默认情况下,extract_table()读取指定页面上的第一个表。如果当前页面需要读取多个表,请使用。直接提取_表格))

  例如,示例文件的第13页包含两个表。使用。extract_table(和。extract_tables)来观察输出。

  导入pdf播放器

  file _ path=r c:\ xxxx \ practice . pdf

  pdf格式的pdf lumber . open(file _ path ):

  page=pdf.pages[12]

  print(page.extract_table))

  是嵌套列表,熟悉这种格式的人会明白,你可以使用pandas或者遍历嵌套列表,使用openpyxl sheet.append (list)写入Excel文件。

  导入pdf播放器

  file _ path=r c:\ xxxx \ practice . pdf

  pdf格式的pdf lumber . open(file _ path ):

  page=pdf.pages[12]

  print(page.extract_tables()。extract_tables()提取当前页面中的所有表格会生成一个三级嵌套列表,第一级列表代表每个表格。

  四。PDF图像提取

  至于图像提取,目前还没有能100%提取图像的模块。这里只介绍基于fitz模块的代码。基本思路是正则。找到图像并输出。

  导入fitz

  进口re

  导入操作系统

  file _ path=r c:\ XXX \ practice . pdf

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

  efpdf2pic(path,pic_path):

  checkXO=r/Type(?=*/XObject(

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

  pdf=fitz.open(路径)

  lenXREF=pdf。_getXrefLength(

  imgcount=0

  forIinrange(1,lenXREF):

  text=pdf。_getxrefstring(I))

  isxobject=re.search(checkxo,text)))))))))))))).

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

  ifnotisxobjectornotisimage:

  继续

  imgcount=1

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

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

  如果图号为5:

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

  否则:

  pix0=fitz.pixmap(fitz.csRGB,pix)).

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

  pix0=无

  pix=无

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

  图像提取成功,但PDF中的图像比这多。欢迎有兴趣的读者交流。

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

留言与评论(共有 条评论)
   
验证码: