数字化转型中PDF文件处理

文章介绍了在数字化转型背景下,如何利用Python的pdfplumber库从非扫描PDF文件(通常由CAD转成)中提取文本、表格和图形信息。pdfplumber具有中文手册和可视化调试功能,能方便地导出文本和表格数据。对于更复杂的图形如线条和曲线,需要利用page.curves。文章还提到,对于非结构化文本,可能需要借助大模型进行理解和检索,但私有化文档可能需要对模型进行微调。
摘要由CSDN通过智能技术生成

1. 需求与适用范围

       在数字化转型工作中,需要提取PDF文件中的一些信息。这些PDF文件通常是其他乙方公司用各类CAD文件绘制的,转成PDF后提供给电厂。这些PDF不是扫描件,因此具备从其中提取数据的可能性。纯文本的读取相对容易,稍微麻烦点的是组态图、接线图。

2. 基本方法

      使用Python的pdfplumber库可以读取PDF文件中的形状、文本和表格。这个库不适合做OCR,但是对于非扫描的PDF效果不错。

优点1:有中文手册

优点2:具备可视化调试功能。

import pdfplumber

with pdfplumber.open("path/to/file.pdf") as pdf:
    p1 = pdf.pages[0]
    im=p1.to_image(resolution=150)#设置转换后图片的分辨率
    im.draw_rects(p1.extract_words())
    im.show()

简单的几行代码就可以把PDF文件中第1页的所有文字框出来。

优点3:可以直接导出文本、矩形、线、表格

使用page.extract_words()可以直接导出文本,输出格式是一个字典列表。用w[i]['text']就可以读取到 第i个文本的框里的文本。同时还有文本框的位置信息等。

使用for r in page.rects:可以遍历所有的矩形。

使用for line in page.lines:可以遍历所有的水平线,对于非水平线,需要再遍历page.curves

比如对于上图中的各类箭头线、折线、竖线都不能靠page.lines,而要靠page.curves

利用Lines和curves里pts属性,可以读取到线段或折线的起点、终点、转折点数据。通过判断这些点是否在前述矩形边界上,就可以获取到矩形和矩形之间的连接关系。

通过page.extract_tables()可以提取页面中的表格。

注意:表格和文本提取后的数据排序并不是完全按照阅读顺序来的,所以可以根据每个文本框或表格单元格的x0,y0,top,bottom等属性来排序获得需要的数据结构。

3. to do

纯文本的读取虽然简单,但是其内容其实并不是结构化。比如文件中可能描述了某个报警功能的作用。而如果我想将其读取到数据库中,并在需要的时候检索出来就比较困难。

这时需要用到目前火热的大模型。目前已经尝试了openai和清华的chatglm。两个模型查询西门子X307-3交换机中的link check功能的作用,都给出了比较满意的答案。回头把截图贴上来(autodl的GPU要抢,OPENAI的梯子也要抢。。。)

但是对于可能得更多私有化的文档(西门子这个问题显然是大模型本身在网络上爬下来作文训练文档了,所以答的比较好)。就需要对模型进行微调,具体的搞法还在研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值