新闻详情

新闻详情

首页 / 资讯中心 / 详情

项目改造日记:模板插件机制

发布时间:2026/9/6 14:36:24来源:尧图网络
项目改造日记:模板插件机制
模板插件机制使用文档适用版本单体整合版PySide6 / Python 3.8对应模块core/pdf_router.py、plugins/本文档说明如何为一种新的 PDF 样式开发一个模板插件。目标新增 PDF 模板时无需改动核心代码只需在plugins/下放置一个.py文件。1. 机制概述单体版曾提供两条生成标准模板的路径路径原理扩展性手工【转换】从按页识别结果_pages.xlsx提取并转 1 表格式通用、不依赖插件模板插件解析本机制按模板判据路由到专属插件直接解析 PDF → 标准格式新增样式只需加插件插件机制由三部分组成插件注册表core/pdf_router.py::load_plugins()启动时扫描plugins/下所有.py模块。路由分派route_pdf(pdf_path)依判据遍历插件命中则调用其parse()。兜底策略 a判据命中但解析失败时立即报错并提示疑似模板由人工介入不自动降级、不静默吞错所有插件均未命中时抛出TemplateNotMatched。2. 目录与文件源码/ ├── core/ │ └── pdf_router.py # 路由引擎勿改除非升级机制本身 ├── plugins/ │ ├── __init__.py │ ├── 1001_style.py # 示例模板KM Aluminium COA / HPA 批次 │ └── 你新增的样式.py # 每个模板一个文件 └── temp_folder/ # 输出目录{母锭号}_std.xlsx新增模板 在plugins/放一个新.py文件下次启动或再次加载时自动被发现。3. 插件协议每个插件必须暴露 4 个接口load_plugins()会校验缺失并跳过不完整插件属性/方法类型必需说明TEMPLATE_IDstr否模板标识用于错误提示与日志缺省用文件名PRIORITYint否优先级数字小优先缺省999。用于两个插件判据可能同时命中时排序recognizes(pdf_path) - bool函数是自报判据判断本插件能否识别这份 PDFparse(pdf_path) - list[dict]函数是专属解析把 PDF 解析成标准记录列表PRIORITY判定多个插件判据都命中时PRIORITY小者先尝试。建议给特征专一、结构明确的模板设更小的值。返回结构标准记录parse()必须返回list[dict]每个dict是一行标准记录键如下键含义是否必需备注ParentIngotSn母锭号 / 批次号是用于分组生成结果文件ElementName元素名称是如Si、FeResultValue结果值是数值去除分隔符可float或strSign符号 / 运算值否如、≤ 0.01应拆为Sign、ResultValue0.01Remark备注否可为Noneroute_pdf会按ParentIngotSn分组每组生成一个{母锭号}_std.xlsx并把源 PDF 文件名自动写入「File」列。因此parse()无需自行写文件。4. 示例1001_style.py已实现importreimportpdfplumber TEMPLATE_ID1001# 供错误提示/日志PRIORITY1# 数字小优先defrecognizes(pdf_path):判据首页含证书与供应商关键字。withpdfplumber.open(pdf_path)aspdf:firstpdf.pages[0].extract_text()orreturn(Certificate of analysisinfirst)and(KM Aluminiuminfirst)defparse(pdf_path):解析逐页取批次号与元素成分映射为标准记录。records[]withpdfplumber.open(pdf_path)aspdf:forpageinpdf.pages:tablespage.extract_tables()batch_extract_batch(tables)# 取 Lot No.forelem,num,signin_tables_for_page(page):records.append({ParentIngotSn:batch,ElementName:elem,ResultValue:num,Sign:sign,Remark:None,})returnrecords5. 如何新增一个模板推荐流程明确判据强特征选该样式 PDF 独有、稳定的特征如首页固定标题、固定供应商名、固定生产企业名。避免用易与大类混淆的弱特征如仅含 Composition。确认版面解析建议先用pdfplumber跑extract_tables()/extract_text()观察版面确认元素能稳定提取、列能对齐。编写插件在plugins/新建名称.py实现recognizes与parse可参考1001_style.py。自测用python -c单次调用route_pdf见第 6 节。隔离健壮性parse()内部做好异常处理与字段兜底避免个别页面异常导致整份失败。6. 调试与调用6.1 Python 脚本调用f:\ECoaService\环境\venv\Scripts\python.exe-c import sys; sys.path.insert(0, rf:\ECoaService\源码) from core.pdf_router import route_pdf, load_plugins plugs load_plugins() # 查看已加载插件 print([(p.template_id, p.priority) for p in plugs]) print(route_pdf(r你的.pdf 绝对路径, output_dirNone, pluginsplugs)) output_dirNone时默认输出到temp_folder/。6.2 在客户端打开「本机直接处理」页选择 PDF点击「解析为标准模板」按钮底部会预览首个结果文件、状态栏显示生成数量、日志区列出每个{母锭号}_std.xlsx完整路径。6.3 常见提示提示含义处理TemplateNotMatched所有插件判据均未命中核对 PDF 是否符合已注册模板若是新样式新增插件PluginParseError疑似模板 [ID]…判据命中但parse()抛异常兜底策略 a需人工介入检查parse()对该 PDF 的版面假设7. 开发规范与注意判据务必先强且唯一多个模板特征相近时加PRIORITY拉开顺序避免误判。单点失败隔离parse()建议对每页/每项做异常兜底一个坏插件不会拖垮引擎load_plugins会对加载异常隔离。性能recognizes()通常只读首页parse()全量读取是正常开销但避免在插件内做无关重活。统一 schema所有插件最终都映射到 1.xlsx 的标准列不要各写各的列否则下游无法统一。不改pdf_router.py除非升级机制本身日常新增模板只动plugins/。8. 与既有功能的关系插件解析PDF 直出标准模板与手工【识别 → 转换】目标一致但路径不同可并存长期建议以插件解析为主。插件解析结果可直接复用现有 include json 提取/取数逻辑数据驱动规则两者不冲突。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

CodexBar 使用指南:不登录就能盯住 AI 配额与成本 2026/9/6 15:12:29

CodexBar 使用指南:不登录就能盯住 AI 配额与成本

CodexBar 使用指南:不登录就能盯住 AI 配额与成本 【免费下载链接】CodexBar Show usage stats for OpenAI Codex and Claude Code, without having to login. 项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar CodexBar 是一款 macOS 菜单栏应用…

阅读更多 →
MES需求说明怎么写?拆解核心模块与实施避坑指南 2026/9/6 15:12:29

MES需求说明怎么写?拆解核心模块与实施避坑指南

简介:面向制造企业车间信息化建设与MES系统选型的需求说明参考文档,适用于制造企业IT人员、MES实施顾问、产品经理及车间管理人员。内容以技术规格书形式组织,覆盖项目范围、总体架构、系统模块功能需求等部分,对生产建模、生产排…

阅读更多 →
MES需求文档怎么写?从功能拆解到落地避坑指南 2026/9/6 15:12:29

MES需求文档怎么写?从功能拆解到落地避坑指南

简介:制造执行系统(MES)处于企业资源计划(ERP)与车间底层设备之间,承担着从工单下达到产品完工的全过程管理。明确的系统边界与结构化需求是MES落地的核心前提。一份合格的需求文档需拆解生产工单、排产调度…

阅读更多 →
APQP落地实战:用第二张时间表管理产品开发项目 2026/9/6 15:12:29

APQP落地实战:用第二张时间表管理产品开发项目

简介:产品设计与开发的流程管理(APQP)项目文档,面向制造业质量管理人员、产品开发工程师及备考APQP相关考试的考生,用于快速梳理从项目立项到过程设计确认的完整管理框架。资源仅包含一个docx文件,大小17KB…

阅读更多 →
热点驱动下 Web3 多链钓鱼攻击的机理与风险防控 —— 基于 GTA6 炒作钓鱼案例分析 2026/9/6 15:12:29

热点驱动下 Web3 多链钓鱼攻击的机理与风险防控 —— 基于 GTA6 炒作钓鱼案例分析

摘要伴随区块链应用与大众流行文化场景不断交织,网络犯罪群体开始借助社会热点流量搭建 Web3 钓鱼体系,将普通娱乐爱好者转化为加密资产欺诈的潜在受害群体。本文以 Malwarebytes 披露、币安广场报道的 GTA6 热点钓鱼网站事件作为分析样本,梳…

阅读更多 →
数据中心节能从PUE到AHU间接蒸发冷:选型、冗余与运维实践 2026/9/6 15:09:29

数据中心节能从PUE到AHU间接蒸发冷:选型、冗余与运维实践

简介:这份PPT围绕数据中心节能技术展开,面向数据中心运维、暖通空调与IT基础设施相关从业者及学习者。内容从用能现状入手,指出高能耗、高发热密度和全年连续运行等特点,并给出空调系统能耗占比近半、国内多数机房PUE高于2.0等关键…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞