提取pdf订单内容

需求:供应链的小伙伴找到我,说是每周处理pdf订单文件太费事,需要把里面的内容逐个拷贝处理出来,然后粘贴到excel归档,这样的操作挺费事的,每次都要花个半个小时以上的时候,而且还有一个问题,人工操作,指不定哪个格子粘贴不对,导致数据出错。细细想来,确认是这么个情况,客户把pdf文件发送过来,确实需要这样做,当然,就需要花不少的时间了。

分析:当然,从Python的思维出发,直接读取pdf不就完事了?果然,Python有第三方的Library支持,选来选取,最后选择了pdfplumber, 基本上可以满足这个需求。注意:图片pdf是无法读取的,那个要涉及到图像识别了,这里的pdf一般指通过其他应用转成的pdf.

处理过程:

整个过程中,处理的核心为通过pdfplumber, 关于这个库,其中用到了pdfplumber.extract_text()进行整个单页面提取,当然,也可以通过table来提取数据,后面剩下的就是数据处理了,当然可以结合微信,钉钉,邮件之类的方式,把结果推送出去。

核心代码如下:

def get_from_pdf(file_name):

    part=''

    ProgramNum=''

    record=[]

    per_record=[]

    with pdfplumber.open(file_name) as pdf:

        page=pdf.pages[0]

        info=page.extract_text()

    with open('temp.txt','w',encoding='utf-8') as fw:

        fw.write(info)

    with open('temp.txt','r',encoding='utf-8') as fr:

        lines=fr.readlines()

        for line in lines:

            line=(line.strip('\n')).strip()

            if "Part:" in line:

                part=get_part(line)

            if "Program Number/Start Date:" in line:

                ProgramNum=get_program_number(line)

            if "/202" in line:

                per_line=line.split(" ")

                if "/202" in per_line[0]:

                    per_record.append(dt_sql(per_line[0]))

                    per_record.append(per_line[2])

                    record.append(per_record)

                    per_record=[]

                   

               

               

            

    print(part)

    print(ProgramNum)

    for line in record:

        print(line)     

return part,ProgramNum,record

在这个里面,提取的内容是做了中转,先转到本地临时txt中,然后从txt中提取数据并转存为list格式,进行更深入的数据筛选。

小结:

通过python对pdf数据的提取,目前有几个优点:

1. 这个方法可以减少人为操作失误,提供人员工作效率

2. 可以把这个方法应用任何使用pdf数据提取的地方,当然做大量pdf数据提取也是可以的。

更多的应用场景等待挖掘。。。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值