3.7 KiB
3.7 KiB
根目录 > nflg-qms-pdf-extract
nflg-qms-pdf-extract - QMS PDF 数据提取模块
模块职责
独立的 PDF 数据提取工具库,不可独立启动。从工程图纸 PDF 中提取尺寸标注(含公差)信息,供 QMS 质量检验使用。核心能力:
- 从 PDF 中提取带位置信息的文本元素
- 将相邻文本元素分组合并
- 识别尺寸标注(含对称/非对称公差、配合公差、螺纹标注等)
- 处理 PDFBox 在 Windows/Mac 上的乱码字符修正(Symbol 字体、GBK 编码等)
- 过滤标题栏区域、表面粗糙度、GD&T 公差等非尺寸文本
- 按区域筛选和合并提取结果
关键依赖
- Apache PDFBox 3.0.4 (PDF 解析)
- Lombok
- SLF4J
关键目录说明
| 路径 | 说明 |
|---|---|
service/PdfExtractionService.java |
主服务入口 -- 从本地文件或 URL 加载 PDF 并提取尺寸数据 |
service/RegionFilterService.java |
区域筛选服务 -- 按页面+矩形区域过滤提取结果,支持多结果合并 |
extraction/PositionedTextStripper.java |
带位置信息的文本提取器(继承 PDFTextStripper),包含乱码字符修正逻辑 |
extraction/TextGrouper.java |
文本分组器 -- 将相邻文本元素按位置/字号合并为 TextGroup |
extraction/DimensionIdentifier.java |
尺寸识别器 -- 通过正则模式识别各类尺寸标注(核心,~490 行) |
extraction/TextNormalizer.java |
文本规范化 -- 修正 Mac/Windows/GBK 乱码字符 + Unicode NFC 规范化 |
extraction/TitleBlockFilter.java |
标题栏过滤器 -- 按区域和关键词过滤非尺寸文本 |
model/TextElement.java |
文本元素模型 -- 单个文本片段(位置/大小/字号/页码) |
model/TextGroup.java |
文本分组模型 -- 合并后的文本组 |
model/DimensionResult.java |
尺寸结果模型 -- 尺寸值+公差+类型+位置+页码 |
尺寸识别模式
DimensionIdentifier 支持以下模式(按优先级排列):
- 对称公差 -- 如
50 +/- 0.1、Phi 280 +/- 0.5 - 非对称公差(斜线) -- 如
100 +0.2/-0.1 - 非对称公差(空格) -- 如
100 +0.2 -0.1 - 配合公差 -- 如
50 H7、Phi 30 m6 - 螺纹标注 -- 如
M12x1.5、G1/2、Rc3/4 - 纯尺寸 + 邻近公差 -- 尺寸数值与公差分属不同 TextGroup,通过邻近搜索关联
- 区域模式兜底 -- 未匹配的文本直接作为原始内容输出
乱码修正
PDF 工程图中 Symbol 字体的直径符号(Phi)、角度符号等常被 PDFBox 误读为乱码字符:
- Windows (GBK):
¡¤->Phi,¡ã->degree,¡À->+/- - Mac:
ÃnÃ->Phi - 修正在 PositionedTextStripper(writeString 层)和 TextNormalizer(二次清理)中双重执行
数据模型
DimensionResult:
- dimension: String (尺寸文本,如 "Phi 50", "M12x1.5")
- tolerance: String (公差文本,如 "+/- 0.1", "H7", "+0.2/-0.1")
- type: String (固定值 "dimension")
- x, y: double (PDF 页面坐标)
- width, height: double(边界框尺寸)
- page: int (所在页码)
- sortOrder: int (排序序号)
被引用方
nflg-qms-admin-- 通过PdfExtractConfig配置类将 PdfExtractionService、RegionFilterService 注册为 Spring Bean
测试
无独立测试文件。
相关文件清单
src/main/java/service/-- 2 个服务类src/main/java/extraction/-- 5 个提取/过滤类src/main/java/model/-- 3 个数据模型pom.xml-- 模块依赖定义pdf数据提取方案.md-- 设计方案文档
变更记录 (Changelog)
| 时间 | 操作 | 说明 |
|---|---|---|
| 2026-05-23 14:28:57 | 新增 | 首次扫描遗漏的模块,本次增量更新补充 |