提取pdf图档中的物料编码

一、摘要

在这里插入图片描述

图1 图档示例

  本篇代码目的是从指定文件夹下的PDF文件中提取物料编码等相关信息,并将这些信息存储在列表中输出。这段代码主要实现了以下功能:

  1. 定义一个file_name函数,用于获取指定文件夹下所有文件的完整路径。通过遍历文件夹和子文件夹,将每个文件的路径添加到列表中并返回。

  2. 定义一个Extract_material_code函数,用于从PDF文件中提取物料编码、零件名称和材料名称。该函数首先获取PDF文件的文件名,然后读取PDF文档中的文本内容。接着,使用正则表达式从文本中匹配物料编码和材料名称,并返回零件名称、物料编码和材料名称的元组。如果匹配失败,则返回零件名称和两个空字符串。

  3. 在主程序中,首先定义一个空列表information_list用于存储提取的信息。然后,调用file_name函数获取指定文件夹下所有文件的路径列表。接着,遍历路径列表,筛选出PDF文件,并调用Extract_material_code函数提取每个PDF文件的物料编码等信息,将结果添加到information_list中。最后,打印出information_list的内容。

二、架构流程

  1. 导入所需的模块: 虽然代码中没有明确地导入,但该脚本需要 os, fitz, 和 re 模块。os 用于文件和目录操作,fitz 用于处理 PDF 文件,而 re 用于正则表达式匹配。

  2. 定义 file_name 函数: 该函数接受一个文件夹路径作为参数,并返回该文件夹及其所有子文件夹中所有文件的路径列表。它使用 os.walk 遍历给定目录及其所有子目录,并收集每个子目录中的文件路径。

  3. 定义 Extract_material_code 函数: 这个函数接受一个 PDF 文件的路径作为参数,并尝试从中提取物料编码和材料名称。它首先从文件名中提取零件名称,然后打开 PDF 文件并提取所有文本。接着,它使用正则表达式查找特定的文本模式以提取物料编码和材料名称。如果找不到这些信息,则返回空字符串。

  4. 主执行部分:

    • 首先,创建一个空列表 information_list,用于存储从每个 PDF 文件中提取的信息。
    • 然后,调用 file_name 函数来获取指定文件夹中所有文件的路径列表。
    • 对于 archives_path_list 中的每个文件路径,调用 Extract_material_code 函数以提取信息。提取的信息(零件名称、物料编码、材料名称)被添加到 information_list 中。
    • 最后,打印 information_list,该列表现在包含从所有 PDF 文件中提取的信息。

  这个脚本的主要目的是从特定文件夹中的所有 PDF 文件中提取物料编码和材料名称,并将这些信息以列表的形式输出。

三、完整代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023-08-26 16:51
# @Author : Leuanghing Chen
# @File : 提取pdf图档物料编码.py
# @Software : PyCharmimport fitz   # pip install PyMuPDF
import re
import os# 获取当前文件夹下所有文件名
def file_name(file_dir):#   print(root) # 当前目录路径#   print(dirs) # 当前路径下所有子目录#   print(files) # 当前路径下所有非目录子文件path_list = []for root, dirs, files in os.walk(file_dir):for i in range(len(files)):path = root + '\\' + files[i]path_list.append(path)return path_list# 提取pdf图档上的物料编码
def Extract_material_code(pdf_path):# 获取零件名称filename = pdf_path.split('\\')[-1]part_name = filename.replace('.pdf', '')text = ""pdf_document = fitz.open(pdf_path)# 提取pdf文字for page_num in range(pdf_document.page_count):text += pdf_document[page_num].get_text()try:# 物料编码regex_material_code = r'物料编码:(.*?)\n'material_code = re.findall(regex_material_code, text, re.S)[0]# 材料regex_material_name = r'.*:.*\n(.*?)\n共.*张 第.*张'material_name = re.findall(regex_material_name, text, re.S)[0]return part_name, material_code, material_nameexcept IndexError:return part_name, "", ""        # 对齐格式if __name__ == '__main__':information_list = []archives_path_list = file_name(r'D:\python_demo\读取pdf文件\temp')   # 读取文件夹中的所有文件for archives_path in archives_path_list:# 筛选pdf文件if archives_path.split(".")[-1].lower() == 'pdf':code_name_list = Extract_material_code(archives_path)information_list.append(code_name_list)print(information_list)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/271383.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CubeMX使用教程(2)——点亮LED

在上一章,我们完成了CubeMX的环境配置,这一章我们通过CubeMX来完成点亮LED的工作。 通过LED原理图可知,如果我们要点亮LD1(第一个灯),它对应开发板的PC8端口,因此我们应该在CubeMX中将PC8配置为…

企业怎么做好数字化转型?

企业进行数字化转型是一个复杂的过程,涉及多个方面和步骤。一些关键点可以帮助企业在数字化转型中取得成功: 1.明确目标和愿景:确定企业数字化转型的目的,这可能包括提高效率、增强客户体验、创造新的收入来源等。设定清晰、可衡…

gradio 摄像头视频流获取

参考:https://github.com/gradio-app/gradio/issues/1490 版本:gradio 4.16.0 gradio_client 0.8.1 import gradio as grgr.Interface(lambda x: x, gr.Image(sourceswebcam, streamingTrue), "image", liveTrue).launch()

预付费电表的应用和预付费平台的操作方式

*、智能预付费电能表的应用分析 1应用功能的分析 这里主要讲的是与远程抄表系统的结合.如图2所示.为系统工作的程序.在远程抄表中,通信方式多种多样.主要有互联网、电话线通信、有线电视通信、光纤通信、GPRS、卫星通…

NLP:自定义模型训练

书接上文,为了完成指定的任务,我们需要额外训练一个特定场景的模型 这里主要参考了这篇博客:大佬的博客 我这里就主要讲一下我根据这位大佬的博客一步一步写下时,遇到的问题: 文中的cfg在哪里下载? 要不…

微信小程序用户登陆和获取用户信息功能实现

官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 接口说明: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html 我们看官方这个图,梳理一下用户…

气相白炭黑外资垄断格局被打破 国内本土企业数量增加

气相白炭黑外资垄断格局被打破 国内本土企业数量增加 气相白炭黑又名气相二氧化硅,是一种无毒、无味、无嗅,无污染的非金属氧化物,主要由硅的卤化物在氢氧火焰中高温水解生成的带有表面羟基和吸附水的无定形的纳米级颗粒。气相白炭黑主要用于…

143:vue+leaflet 在25833投影坐标下,加载一小块图像叠层数据

第143个 点击查看专栏目录 本示例是介绍如何在vue+leaflet, 自定义CRS,形成新的投影,这里是25833投影,并使用 L.Proj.imageOverlay的方法在地图上加载载一小块图像叠层数据。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式…

【漏洞复现】大华DSS数字监控系统配置系统后台弱口令漏洞

Nx01 产品简介 大华DSS数字监控系统是一个在通用安防视频监控系统基础上设计开发的系统,除了具有普通安防视频监控系统的实时监视、云台操作、录像回放、报警处理、设备治理等功能外,更注重用户使用的便利性。 Nx02 漏洞描述 大华DSS数字监控系统/confi…

简析内部审计数字化转型的方法和路径【小落送书(第6期)】

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Docker容器的操作

目录 运行容器 查看容器 查看容器详细信息 删除容器 启动容器 停止容器 重启容器 暂停容器 激活容器 杀死容器 进入容器 常用 查看容器的日志 拷贝容器的文件到本地 容器改名 查看容器资源 查看容器内部的进程 监测容器发生的事件 检测容器停止以后的反回值…

PL/SQL连接数据库报Initialization error Could not load “.../oci.dll“问题处理

之前都配置好了能正常使用,手欠改了下文件目录名称,导致oci.dll的目录发生变化 面板可以正常打开就是连接的时候会报错,能知道问题是配置的路径出了问题,在Tools—Preferences—Connection中配置了几次,直接改成了现有…

LVS+Keepalived 高可用集群

目录 一.Keepalived工具介绍 1.用户空间核心组件: (1)vrrp stack:VIP消息通告 (2)checkers:监测real server(简单来说 就是监控后端真实服务器的服务) (…

用MATLAB求解微分方程

第一篇为 基础概念 ,第二篇为 R-K法的具体实现方法。 (一)常微分方程的MATLAB求解 概要: 常微分方程的MATLAB求解分为解析解、数值解解析解(只有少数微分方程组有解析解):dsolve函数数值解:solver函数&a…

MES数据采集设备

在智能制造日益盛行的今天,MES(制造执行系统)作为连接计划与生产现场的关键环节,其重要性不言而喻。而MES数据采集设备则是MES系统的核心组件,负责实时、准确地获取生产现场的各种数据,为企业的生产决策提供…

原型设计工具有哪些值得推荐?列举6个!

原型设计是一个可视化项目需求的过程,没有产品原型的创建,就无法从事产品设计。因此,原型工具的选择不容忽视。一个好的原型工具不仅可以高效输出页面设计,规范产品原型,还可以有效降低开发设计师的理解和沟通成本。在…

Springboot 打成jar包后 结合idea remote 远程debug

1、将测试demo打成jar 2、 将jar放到某个目录下,并运行起来 java -jar -agentlib:jdwptransportdt_socket,servery,suspendn,address*:10087 base_admin-1.0.0.jar 3、在Idea中编辑Remote调试 4、在浏览器中打开刚启动的jar,比如我的项目地址&#x…

使用 Docker 部署 MrDoc 在线文档管理系统

1)MrDoc 介绍 MrDoc 简介 MrDoc 觅思文档:https://mrdoc.pro/ MrDoc 使用手册:https://doc.mrdoc.pro/p/user-guide/ MrDoc 可以创建各类私有化部署的文档应用。你可以使用它进行知识管理、构建团队文库、制作产品手册以及在线教程等。 Mr…

【Java EE初阶二十九】Linux 系统的学习

当前写的博客系统程序,只是部署在咱们自己的电脑上,其他用户是无法直接访问的.由于 NAT 机制的存在,导致了IP 地址就被分成了 内网 IP 和 外网 IP. 云服务器,包括公司中使用专用服务器,一般都是 Linux 系统,这个系统的使用和 Windows 差异很大.(通过命令行来操作的系…

ABAP - SALV教程12 显示图标和提示信息

ALV要求字段的值为图标的需求并不多见,一般都用于红黄绿灯,来表示单据的执行状态,添加图标的方式也可以实现红黄绿灯的功能,也可以参考SALV实现红黄绿灯这篇文章:http://t.csdnimg.cn/Dzx7x效果图SAVL列设置为图标图标…