python解析pdf,读取文字,可识别两栏pdf等

  • 一、解析我们的pdf文件,首先第一步是解析普通类别的pdf(只有一栏)
    • 代码中包含注释(不懂得可以留言)
  • 二、处理拥有两栏等类型的pdf
    • 为什么要单独分析两栏呢?
    • 代码中包含注释(不懂得可以留言)
  • 欢迎大家留言交流!!!!!!!!

一、解析我们的pdf文件,首先第一步是解析普通类别的pdf(只有一栏)

代码中包含注释(不懂得可以留言)

使用的话,只需要修改自己的pdf路径即可

# encoding: utf-8
import sys
import importlib
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams, LTImage, LTCurve, LTFigure
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfpage import PDFPagepath = "1.pdf"def parse():fp = open(path, 'rb')# 用文件对象来创建一个pdf文档分析器PDFParserpraser = PDFParser(fp)# 创建一个PDF文档PDFDocumentdoc = PDFDocument(praser)# 检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 创建PDf 资源管理器 来管理共享资源PDFResourceManagerrsrcmgr = PDFResourceManager()# 创建一个PDF设备对象LAParamslaparams = LAParams()# 创建聚合器,用于读取文档的对象PDFPageAggregatordevice = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个PDF解释器对象,对文档编码,解释成Python能够识别的格式:PDFPageInterpreterinterpreter = PDFPageInterpreter(rsrcmgr, device)# 循环遍历列表,每次处理一个page的内容for page in PDFPage.create_pages(doc):  # doc.get_pages() 获取page列表# 利用解释器的process_page()方法解析读取单独页数interpreter.process_page(page)# 这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象,一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal等等,想要获取文本就获得对象的text属性,# 使用聚合器get_result()方法获取页面内容layout = device.get_result()for x in layout:if isinstance(x, LTTextBoxHorizontal):# 需要写出编码格式with open(r'1.txt', 'a', encoding='utf-8') as f:results = x.get_text()f.write(results + '\n')if __name__ == '__main__':parse()

二、处理拥有两栏等类型的pdf

为什么要单独分析两栏呢?

1、因为之前的方法读取pdf。他是相当于左栏读一句之后右栏读一句,最后输出的文本顺序是错乱的。不利于我们分析。
2、我们需要的是将整体的左侧部分读取完成之后在读取右边的部分。
3、pdf样例是:

这种格式。

代码中包含注释(不懂得可以留言)

from PIL import Image
import os
import pytesseract
import cv2 as cv
import fitzdef pdf_image(pdfPath,imgPath,zoom_x,zoom_y,rotation_angle):# 打开PDF文件pdf = fitz.open(pdfPath)# 逐页读取PDFfor pg in range(0, pdf.pageCount):page = pdf[pg]# 设置缩放和旋转系数trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)pm = page.getPixmap(matrix=trans, alpha=False)# 开始写图像pm.writePNG(imgPath+str(pg)+".png")#pm.writePNG(imgPath)pdf.close()
pdf_path = '1.pdf'
img_path ='1.png'
pdf_image(pdf_path, img_path, 5, 5, 0)
# 依赖opencv
img = cv.imread(img_path)
print(img)
# text = pytesseract.image_to_string(Image.fromarray(img), lang='chi_tra')
text = pytesseract.image_to_string(Image.fromarray(img), lang='chi_sim')
# 不依赖opencv写法
# text=pytesseract.image_to_string(Image.open(img_path))
print(text)

他的步骤是,首先将我们的pdf转换成图片的格式,之后通过使用pytesseract,来进行图片文字的识别操作。最后将我们的数据输出。
可以很好的解决拥有两栏文字的pdf情况。

欢迎大家留言交流!!!!!!!!

python解析pdf,读取文字,可识别两栏pdf等相关推荐

  1. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  2. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  3. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. PDF合并:如何将两个PDF文件合并成一个PDF文件

    PDF文件是我们在工作中经常能够用到的文件,尤其是在办公中会遇到很多PDF文件在传输的过程中为了传输更快被拆分成了几个PDF文件,但是要找一个完整的PDF文件就需要把两个被拆分的PDF文件合并成一个P ...

  5. python解析并读取PDF文件:函数总结

    目录 1.PyPDF2 2. pdfminer & pdfminer3k 3. pdfplumber 4. Camelot 虽然PDF文件对文本布局非常好,容易打印并阅读,但软件要将它们解析为 ...

  6. 基于Python深度学习的文字检测识别系统

    摘要 文字是人类交流信息的重要工具,在科技和网络不断发展的今天,文本的方式或者说载体发生了很大的变化,文字不再只停留在书面,更以标识牌,横幅,广告牌等等方式出现我们的生活中,或者说,它们是一张张图片中 ...

  7. python解析word2003_python读取word文档的方法

    本文实例讲述了python读取word文档的方法.分享给大家供大家参考.具体如下: 首先下载安装win32com from win32com import client as wc word = wc ...

  8. 教你识别两种PDF密码

    第一篇文章嘛,就来小谈谈PDF的两种密码(two types of PDF password). 你知道PDF文件的两种密码是什么吗?答案即将揭晓 -------------------------- ...

  9. java解析getresponsebodyasstring_java读取网站内容的两种方法是什么呢?

    1,HttpClient 利用apache的虚拟客户端包获取某个地址的内容 1import java.io.UnsupportedEncodingException; 2import java.uti ...

最新文章

  1. 阿里三面,P9面试官是如何360°无死角考察候选人的?
  2. 看!我写的关于“简单异或”加密的破解分析演示程序!
  3. LCS2005客户端配置详解:LCS2005系列之二
  4. web前端技术-教你如何部署私有Git服务器?
  5. 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
  6. 私有化仓库的 GO 模块使用实践
  7. 信息学奥赛一本通 2016:【例4.1】for循环求和
  8. python panda3d教程_panda3d基础学习
  9. mac下IDEA远程调试hive-2.2.0
  10. 如何优化myeclipse.
  11. python装饰器模式带参数_python 装饰器模式 我的理解
  12. SpringCloud学习笔记028---在SpringBoot中整合多数据源_实战项目
  13. input type=file美化
  14. hive 建表_大数据面试必备 | Hive数据仓工具面试题!
  15. 4.1 模拟低通滤波器设计
  16. Maven第8篇:按需构建
  17. QA问答系统中的深度学习技术实现
  18. AHB总线介绍及其时序图
  19. UE4、UE5凋用第三方PC程序
  20. 涂子沛:数据爆炸的时代,数据经济有哪些新“蓝海”?

热门文章

  1. 我花了五个小时的时间,将全部文章详细整理出来了,千万不要错过!
  2. pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力
  3. Web开发项目 # 2048小游戏
  4. 埃夫特机器人回零偏差太大_埃夫特指令
  5. uniapp使用canvas完成手写电子签名
  6. 20180710-B · Craft Beer USA · ggplot2 geom_density_ridges_gradient 核密度估计峰峦图 字体设置 · R 语言数据可视化 案例 源码
  7. Choosing Teams
  8. tomcat记录访问日志
  9. cdrx8如何批量导出jpg_cdr x8批量导出插件
  10. vue3+vite UC浏览器兼容