feat(ocr): 扫描件与图片识别——OCR 进文字层、资质库上传识别、大图浏览

计划见 docs/architecture/vision-plan.md(VS1–VS13,docs/decisions.md)。

- 验证:OCR(RapidOCR + PP-OCRv6 small,CPU)和 DeepSeek Flash 看图在国动投标文件
  和 7 张证书上初测(tech-validation §7,代码 spikes/s5-ocr/)
- OCR 服务 services/ocr(镜像、Compose 服务):整页转正(含 180°)、红章附近按红色通道重读
- 扫描页和插图识别后并入文字层 v6,句子标 source=ocr;出处标「OCR」(迁移 0013);
  依据识别文字的问题降级,规则不查扫描附件;国动端到端见 check-eval §16
- 资质库上传识别:添加资质对话框最上面传证书照片,识别后填表,只预填和 OCR 文字
  对得上的字段;识别值留痕、照片挂成附件(迁移 0014,提示词 vision.cert_fields v1)
- 资质库改为查看详情(只读键值 + 附件缩略图),附件用大图浏览控件看,不开新标签页
  (设计规范 §7.23);PDF 附件按页出预览图

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-11-05 17:50:13 +08:00
parent 0b783ababa
commit 3344f09563
63 changed files with 4973 additions and 345 deletions

View File

@@ -60,3 +60,18 @@ docker run -d --name bd-docling -p 5101:5001 ghcr.io/docling-project/docling-ser
| `s2-format/` | 斜体 / 下划线 / 加粗识别与 DOCX 交叉校验;Docling 对比 |
| `s3-citation/` | 切句、句子编号、quads、几何回读、文本保真、高亮渲染 |
| `s4-llm/` | 输入准备与银标准、提示词(`prompts/`)、调用与三道校验、评估、汇总 |
## S5 / S6 扫描件识别初测(2026-11-05)
结论见 `docs/architecture/tech-validation.md` §7。用独立的 Python 3.12 环境(onnxruntime 还没有 3.14 的包):
```bash
cd spikes/s5-ocr
uv venv -p 3.12 .venv && uv pip install -p .venv/bin/python rapidocr onnxruntime pypdfium2 pdfplumber httpx pillow numpy rapidfuzz
PDF=../../samples/tenders/GD/响应文件-最新.pdf
.venv/bin/python -I ocr_pages.py $PDF out/gd-ocr.json # 扫描页整页、文字页的图片区域
.venv/bin/python -I ocr_pages.py $PDF out/gd-ocr-rch.json --rch # 有红章的扫描页改用红色通道(对比用)
.venv/bin/python -I synth_cer.py $PDF 35-60 # 合成扫描件的字准
.venv/bin/python -I vision_pages.py $PDF out/gd-ocr.json out/gd-vision.json # DeepSeek Flash,读仓库根目录 .env
```