Skip to content

Commit 3ef9093

Browse files
committed
拆分仓库:仅保留 OpenVINO 路径 + 落地 Phase 1/2 代码
仓库重组: - 高通赛题(qnn/)已迁出到 https://github.com/bob798/paddleocr-vl-qnn - 进阶任务 #26 小伴提交材料(xiaoban/)已并入 https://github.com/bob798/xiaoban submission/ OpenVINO 子项目 (进阶任务 #13) 落地: - openvino/src/: 共享推理封装 (inference.py)、PDF 预处理 (pdf_preprocessor.py, pdfplumber 文字层判断 + pypdfium2 渲染)、文档解析 (doc_parser.py)、 表格感知切片 (chunker.py)、端到端管线 (pipeline.py) - openvino/scripts/: - benchmark_inference.py:PyTorch vs OpenVINO 速度 Benchmark - benchmark_ocr_quality.py:Tesseract vs PaddleOCR-VL 质量对比 - run_phase2_pipeline.py:PDF → 解析 → 切片 CLI - generate_synthetic_data.py:合成测试图片 + PDF - openvino/data/test_images/:10 张分类测试图(text/table/formula/mix) - openvino/data/test_documents/:3 份测试 PDF(text_pdf/scanned/spec_with_tables) - openvino/README.md:Phase 1+2 运行指南 - openvino/requirements.txt + configs/models.json 文档: - docs/项目计划.md:Phase 1+2 状态更新为代码完成 - docs/周报/W1_2026-05-08.md:第一次周报 - TODO.md:链接到拆分后的关联仓库 本地烟囱测试已通过:chunker 在合成 markdown 上输出 7 个正确分类的 chunk; preprocess_pdf 对 3 份测试 PDF 的文字层 / OCR 路径判定均符合预期。 推理 Benchmark 实测数据待 IR 落地后补齐(详见周报第 3 节)。
1 parent 965d78d commit 3ef9093

54 files changed

Lines changed: 2091 additions & 4816 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
.DS_Store
22
.omc/
33
.obsidian/
4+
.claude/
45

5-
# QNN SDK(1.4G,不入库)
6-
*.zip
7-
qnn/qnn-sdk/
8-
qnn/models/
9-
qnn/data/calibration/
10-
qnn/results/
11-
qnn/reports/*.json
6+
# Python
7+
__pycache__/
8+
*.pyc
9+
*.pyo
10+
*.egg-info/
11+
.venv/
12+
venv/
13+
14+
# OpenVINO IR / 模型权重(不入库)
15+
openvino/models/
16+
17+
# PDF 渲染缓存
18+
openvino/data/test_documents/*.cache/
19+
openvino/data/**/*.cache/
20+
21+
# Benchmark / pipeline 产出(脚本运行后生成)
22+
openvino/results/phase1/benchmark_inference.*
23+
openvino/results/phase1/quality_compare*
24+
openvino/results/phase2/*.markdown
25+
openvino/results/phase2/*.chunks.jsonl
26+
openvino/results/phase2/*.summary.json
27+
openvino/results/phase2/phase2_overview.json

TODO.md

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
> 详细执行手册见 [`docs/开发手册.md`](docs/开发手册.md)
4747
> 截止日期:2026-06-05
4848
49-
- [ ] **Phase 1 (Week 1)**: 环境搭建 + 模型验证 + 推理 Benchmark
50-
- [ ] **Phase 2 (Week 2)**: 文档解析 + 表格感知切片模块
49+
- [x] **Phase 1 (Week 1)**: 环境搭建 + 模型验证 + 推理 Benchmark — 代码完成,待跑通实测数据(见 `openvino/scripts/benchmark_inference.py` 和 `benchmark_ocr_quality.py`)
50+
- [x] **Phase 2 (Week 2)**: 文档解析 + 表格感知切片模块 — 代码完成(见 `openvino/src/{pdf_preprocessor,doc_parser,chunker,pipeline}.py`)
5151
- [ ] **Phase 3 (Week 3)**: RAG 问答链路(Embedding + ChromaDB + LLM)
5252
- [ ] **Phase 4 (Week 4)**: Tesseract vs PaddleOCR-VL 对比评测 + 优化
5353
- [ ] **Phase 5 (Week 5)**: 整理 Notebook + README + requirements + 提交
@@ -65,32 +65,14 @@
6565
6666
---
6767
68-
## 高通赛题|基于 QNN 部署 PaddleOCR-VL 模型
68+
## 关联仓库
6969
70-
> 技术标签:PaddleOCR-VL,高通 QNN SDK,Hexagon NPU,Paddle2ONNX
71-
> 截止日期:2026-06-05
72-
73-
### 提交内容
74-
75-
- [x] 模型转换脚本(Paddle → ONNX → QNN 全链路)
76-
- [x] 转换说明文档
77-
- [x] 端侧推理服务代码
78-
- [x] 文档解析 pipeline 代码(参考 doc_parser)
79-
- [x] 精度对比评测脚本
80-
- [x] 性能测试脚本
81-
- [x] Dockerfile + docker-compose
70+
> 本仓库 `doc-qna-openvino` 仅承载 OpenVINO 路径(进阶任务 #13)。其他赛题 / 提交材料已拆分到独立仓库:
8271
83-
### 验证阶段(待 SDK 就绪后执行)
84-
85-
- [ ] Docker 环境构建成功
86-
- [ ] 布局检测模型:Paddle → ONNX → QNN 转换跑通
87-
- [ ] VL 模型:ONNX 导出成功(验证算子兼容性)
88-
- [ ] VL 模型:QNN 转换成功
89-
- [ ] HTP-simulator 上推理可运行
90-
- [ ] 精度损失 ≤ 5%
91-
- [ ] 性能报告填充实测数据
92-
93-
> 代码目录:[`qnn/`](qnn/)
72+
| 内容 | 仓库 |
73+
|------|------|
74+
| 高通赛题(基于 QNN 部署 PaddleOCR-VL) | https://github.com/bob798/paddleocr-vl-qnn |
75+
| 进阶任务 #26 小伴(提交材料) | https://github.com/bob798/xiaoban(`submission/` 子目录)|
9476
9577
---
9678
@@ -100,12 +82,14 @@
10082
|------|------|
10183
| `docs/进阶方案.md` | 已提交的进阶任务方案(OpenVINO) |
10284
| `docs/开发手册.md` | Phase 1-5 执行手册(按周推进) |
85+
| `docs/项目计划.md` | 对齐 6/5 截止日期的项目开发计划 |
10386
| `docs/技术介绍.md` | 技术科普(OpenVINO / PaddleOCR-VL) |
10487
| `docs/差异化分析.md` | 与现有 notebooks 的差异论证 |
10588
| `docs/打卡记录.md` | 打卡任务 #1 提交记录 |
89+
| `docs/周报/` | 每周周报存档 |
10690
| `assets/` | 截图(打卡运行结果) |
107-
| `qnn/` | **高通 QNN 赛题完整代码和文档** |
108-
| `qnn/README.md` | QNN 赛题说明 |
109-
| `qnn/docs/模型转换指南.md` | Paddle → ONNX → QNN 全链路文档 |
110-
| `qnn/scripts/` | 转换/量化/评测脚本 |
111-
| `qnn/src/` | 推理服务 + 文档解析 Pipeline |
91+
| `openvino/README.md` | Phase 1+2 运行指南 |
92+
| `openvino/scripts/benchmark_inference.py` | PyTorch vs OpenVINO 速度 Benchmark |
93+
| `openvino/scripts/benchmark_ocr_quality.py` | Tesseract vs PaddleOCR-VL 质量对比 |
94+
| `openvino/scripts/run_phase2_pipeline.py` | PDF → 解析 → 表格感知切片 CLI |
95+
| `openvino/src/` | 共享推理封装 + 解析 + 切片模块 |

docs/周报/W1_2026-05-08.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# 进阶任务 #13 · 第 1 周周报(截止 2026-05-08)
2+
3+
- **GitHub ID**:bob798
4+
- **项目仓库**[doc-qna-openvino](https://github.com/bob798/doc-qna-openvino)
5+
- **任务**:基于 OpenVINO 的多模态文档理解与智能应用开发(任务 #13
6+
- **方案概述**:基于 PaddleOCR-VL + OpenVINO 的产品文档智能入库与客服问答系统
7+
- **覆盖周期**:2026-05-05 ~ 2026-05-08(开发阶段第 1 周)
8+
9+
---
10+
11+
## 1. 本周完成
12+
13+
### 1.1 项目脚手架
14+
15+
- 整理仓库目录结构,新建 `openvino/` 子项目用于承载本任务全部代码与产物
16+
- 制定按 Phase 1~5 拆周推进的开发计划,对齐 6/5 截止日期,详见 [`docs/项目计划.md`](../项目计划.md)
17+
- 编写实践方案执行手册 [`docs/开发手册.md`](../开发手册.md),逐 Phase 列明目标、步骤与验证标准
18+
19+
### 1.2 Phase 1:环境搭建与模型验证
20+
21+
| 任务 | 状态 | 产出 |
22+
|------|------|------|
23+
| OpenVINO 2025.4.1 环境搭建 | ✅ 完成 | Python 3.12 + openvino / openvino-genai / openvino-tokenizers |
24+
| PaddleOCR-VL 0.9B 推理跑通 | ✅ 完成 | 走通 paddleocr_vl notebook,OpenVINO 路径成功输出结构化 Markdown |
25+
| PyTorch vs OpenVINO 速度 Benchmark 脚本 | ✅ 代码完成 | `openvino/scripts/benchmark_inference.py`:支持 warmup + N 次取均值,输出 markdown 表 + json |
26+
| Tesseract vs PaddleOCR-VL 质量对比脚本 | ✅ 代码完成 | `openvino/scripts/benchmark_ocr_quality.py`:并排展示、字符相似度、人工评分表模板 |
27+
| 10 张测试图片准备 | 🟡 合成版完成 | Pillow 合成 `text/table/formula/mix` 各类样本,路径 `openvino/data/test_images/`,下周用真实样本替换 |
28+
| 推理速度 / 解析质量实测数据 | ⬜ 未完成 | 阻塞于 IR 落地,详见第 3 节 |
29+
30+
### 1.3 Phase 2:文档解析与切片模块(提前启动)
31+
32+
| 模块 | 文件 | 关键能力 |
33+
|------|------|----------|
34+
| PDF 预处理 | `openvino/src/pdf_preprocessor.py` | pdfplumber 文字层抽取 → 命中率判断(≥90% 走文字层);不命中页用 pypdfium2 渲染(自带二进制,免装 poppler)|
35+
| 文档解析 | `openvino/src/doc_parser.py` | 复用文字层 / 调用 PaddleOCR-VL OpenVINO 全图 prompt;输出结构化 Markdown,按页携带 `source` 元信息 |
36+
| 表格感知切片 | `openvino/src/chunker.py` | Markdown 表格识别(`\|...\|` + 分隔符)→ 表头 + 单行 chunk;非表格按段落切 200~500 字符,超长保留 50 字符 overlap |
37+
| 端到端管线 | `openvino/src/pipeline.py` + `scripts/run_phase2_pipeline.py` | PDF → 预处理 → 解析 → 切片 → JSONL,带元数据 `{doc_name, page, section_title, kind}` |
38+
| 测试数据 | `openvino/data/test_documents/` | 合成 3 份 PDF:`text_pdf.pdf`(含文字层)、`scanned.pdf`(图像化扫描件)、`spec_with_tables.pdf`(含表格规格书)|
39+
40+
### 1.4 关键链路本地验证
41+
42+
- `chunker.chunk_page` 在合成 markdown 上输出 7 个 chunk:3 个文本 chunk(标题 + 段落)+ 1 个表头 chunk + 2 个表格行 chunk(每行携带表头 + 分隔符)+ 1 个尾部章节 chunk,元数据完整
43+
- `pdf_preprocessor.preprocess_pdf` 对 3 份测试 PDF 的判定:
44+
- `text_pdf.pdf`:mode=mixed(页 1 文字层命中,页 2 字数过少自动转 OCR)
45+
- `scanned.pdf`:mode=ocr(无文字层,2 页全部走 OCR 路径)
46+
- `spec_with_tables.pdf`:mode=text(文字层命中走快速路径)
47+
48+
---
49+
50+
## 2. 下周(W2 · 5/12 ~ 5/18)计划
51+
52+
[项目计划.md](../项目计划.md) 推进 Phase 2 收尾 + Phase 3 启动:
53+
54+
1. **IR 落地**(解封 Phase 1 实测数据)
55+
- 候选路径:(a) 从 ModelScope 下载 `zhaohb/PaddleOCR-VL-1.5-ov` 预转 IR,约 940 MB(INT4 LLM + INT8 Vision + DocLayout);(b) 通过 `paddleocr_vl_openvino` wheel 自行转换。具体路径周一锁定
56+
- 落地后跑通 `benchmark_inference.py``benchmark_ocr_quality.py`,将实测均值替换 `docs/进阶方案.md` 中的 "≥ 2×" / 解析准确率预估值
57+
2. **Phase 2 真实样本验证**
58+
- 用 3 份真实业务 PDF 替换合成样本,重跑 `run_phase2_pipeline.py`,人工抽检表格 chunk 完整性、段落切分合理性、元数据准确性
59+
3. **Phase 3 启动**
60+
- BGE-small 转 OpenVINO IR + ChromaDB 入库
61+
- 设计 prompt 模板,跑通"问题 → 检索 → LLM 回答 + 来源引用"端到端最小链路
62+
63+
---
64+
65+
## 3. 遇到的问题与风险
66+
67+
| 问题 | 影响 | 当前应对 |
68+
|------|------|----------|
69+
| PaddleOCR-VL 在官方 optimum 导出器中暂未原生支持 | 无法直接用 `optimum-cli export openvino` 一键转换 | 改用社区 `paddleocr_vl_openvino` wheel 或下载 ModelScope 预转 IR |
70+
| ModelScope 预转 IR 采用拆分布局(`llm_stateful_int4``vision_int8``vision_mlp` 等),与 `openvino_genai.VLMPipeline` 默认期望文件名不兼容 | 直接用 `VLMPipeline(ir_dir)` 加载会失败 |`src/inference.py` 增加适配层,自动识别两种 IR 布局 |
71+
| 真实业务 PDF 样本暂未到位 | Phase 2 验证目前用合成样本,覆盖度不足 | 下周补齐 3 份真实文档(说明书、规格书、扫描件)|
72+
73+
---
74+
75+
## 4. 关键链接
76+
77+
- 仓库:`https://github.com/bob798/doc-qna-openvino`
78+
- 子项目:[`openvino/README.md`](../../openvino/README.md)(Phase 1 + 2 运行指南)
79+
- 项目计划:[`docs/项目计划.md`](../项目计划.md)
80+
- 执行手册:[`docs/开发手册.md`](../开发手册.md)

docs/项目计划.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424

2525
| Phase | 内容 | 状态 |
2626
|-------|------|------|
27-
| 1 | 环境搭建 + 模型验证 + 推理 Benchmark | 🔄 环境已搭建,Benchmark 未完成 |
28-
| 2 | 文档解析 + 表格感知切片模块 | ⬜ 未开始 |
27+
| 1 | 环境搭建 + 模型验证 + 推理 Benchmark | 🔄 代码完成(`openvino/scripts/benchmark_*.py`),待本机跑出实测数据 |
28+
| 2 | 文档解析 + 表格感知切片模块 | 🔄 代码完成(`openvino/src/{pdf_preprocessor,doc_parser,chunker,pipeline}.py`),待 3 份测试 PDF 验证 |
2929
| 3 | RAG 问答链路(Embedding + ChromaDB + LLM) | ⬜ 未开始 |
3030
| 4 | Tesseract vs PaddleOCR-VL 对比评测 + 优化 | ⬜ 未开始 |
3131
| 5 | 整理 Notebook + README + requirements + 提交 | ⬜ 未开始 |
@@ -50,17 +50,19 @@
5050

5151
- [x] OpenVINO 2025.4.1 环境搭建
5252
- [x] PaddleOCR-VL 0.9B OpenVINO 推理跑通
53+
- [x] 推理速度 Benchmark 脚本(`openvino/scripts/benchmark_inference.py`
54+
- [x] Tesseract vs PaddleOCR-VL 质量对比脚本(`openvino/scripts/benchmark_ocr_quality.py`
5355
- [ ] 准备 10 张测试图片(纯文字 ×3、表格 ×3、公式 ×2、图文混排 ×2)
54-
- [ ] PyTorch vs OpenVINO 推理速度 Benchmark
55-
- [ ] Tesseract vs PaddleOCR-VL 解析质量对比截图
56+
- [ ] 跑通 Benchmark,将实测数据写入 `openvino/results/phase1/`
5657

5758
### Phase 2:文档解析与切片模块
5859

59-
- [ ] PDF 可读性判断(pdfplumber 提取 → 判断是否走 OCR 路径)
60-
- [ ] PaddleOCR-VL 逐页解析,输出结构化 Markdown
61-
- [ ] 表格感知切片(表格行+表头为 chunk,段落按语义切分 300-500 字符)
62-
- [ ] 元数据附加(doc_name, page, section_title)
63-
- [ ] 3 份测试文档全流程验证
60+
- [x] PDF 可读性判断(`openvino/src/pdf_preprocessor.py`
61+
- [x] PaddleOCR-VL 逐页解析,输出结构化 Markdown(`openvino/src/doc_parser.py`
62+
- [x] 表格感知切片(`openvino/src/chunker.py`
63+
- [x] 元数据附加(doc_name, page, section_title, kind)
64+
- [x] 端到端 CLI(`openvino/scripts/run_phase2_pipeline.py`
65+
- [ ] 准备 3 份测试 PDF + 跑全流程验证
6466

6567
### Phase 3:RAG 问答链路
6668

openvino/README.md

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
# 进阶任务 #13 · OpenVINO 子项目代码
2+
3+
> 飞桨黑客松第 10 期 · 文心伙伴赛道
4+
> 项目:基于 PaddleOCR-VL + OpenVINO 的产品文档智能入库与客服问答系统
5+
6+
本目录是 OpenVINO 路径的全部代码和实验产物,**Phase 1(推理 Benchmark)****Phase 2(文档解析 + 切片)** 已完成代码实现,运行所需的模型 / 测试数据由开发者本机准备。
7+
8+
```
9+
openvino/
10+
├── README.md 本文档
11+
├── requirements.txt 依赖
12+
├── configs/models.json 模型/路径配置
13+
├── data/
14+
│ ├── test_images/README.md Phase 1 的 10 张测试图片说明
15+
│ └── test_documents/README.md Phase 2 的 3 份测试 PDF 说明
16+
├── src/
17+
│ ├── inference.py OpenVINO / PyTorch / Tesseract 推理封装
18+
│ ├── pdf_preprocessor.py pdfplumber 可读性判断 + pdf2image 渲染
19+
│ ├── doc_parser.py PaddleOCR-VL 全图解析 → 结构化 Markdown
20+
│ ├── chunker.py 表格感知切片 + 元数据
21+
│ └── pipeline.py Phase 2 端到端管线
22+
├── scripts/
23+
│ ├── benchmark_inference.py Phase 1 · PyTorch vs OpenVINO 速度
24+
│ ├── benchmark_ocr_quality.py Phase 1 · Tesseract vs PaddleOCR-VL 质量
25+
│ └── run_phase2_pipeline.py Phase 2 · CLI 入口
26+
└── results/
27+
├── phase1/ Benchmark 输出(脚本运行后自动生成)
28+
└── phase2/ 切片输出(脚本运行后自动生成)
29+
```
30+
31+
---
32+
33+
## 准备工作
34+
35+
### 1. 安装依赖
36+
37+
```bash
38+
cd openvino
39+
python -m venv .venv && source .venv/bin/activate # 或 conda
40+
pip install -r requirements.txt
41+
# Tesseract 需另装二进制(macOS:`brew install tesseract tesseract-lang`)
42+
```
43+
44+
### 2. 准备 PaddleOCR-VL 的 OpenVINO IR
45+
46+
参考 [openvino_notebooks/paddleocr_vl](https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/paddleocr_vl)
47+
的官方流程将模型下载并转为 IR,输出到:
48+
49+
```
50+
openvino/models/paddleocr_vl_ov/
51+
├── openvino_model.xml
52+
├── openvino_model.bin
53+
├── tokenizer.xml
54+
├── tokenizer.bin
55+
└── ...
56+
```
57+
58+
可在 `configs/models.json` 中调整 IR 目录与设备。
59+
60+
### 3. 准备测试数据
61+
62+
- `data/test_images/`:按 [README](data/test_images/README.md) 放入 10 张图片
63+
- `data/test_documents/`:按 [README](data/test_documents/README.md) 放入 3 份 PDF
64+
65+
---
66+
67+
## Phase 1 · 推理 Benchmark
68+
69+
### Benchmark 1:PyTorch vs OpenVINO 速度
70+
71+
```bash
72+
python scripts/benchmark_inference.py \
73+
--image_dir data/test_images \
74+
--ir_dir ./models/paddleocr_vl_ov \
75+
--device CPU \
76+
--runs 3
77+
```
78+
79+
输出:
80+
81+
- `results/phase1/benchmark_inference.md` —— Markdown 表格(含每张图 mean/min/max 与加速比)
82+
- `results/phase1/benchmark_inference.json` —— 原始数据
83+
84+
> 用该 markdown 中的实测均值替换 `docs/进阶方案.md` 里的 "≥ 2×" 预估。
85+
86+
如果当前环境装不了 PyTorch(如 macOS x86_64 PyTorch 版本受限),加 `--no_pytorch` 仅跑 OpenVINO,并在最终交付物中说明环境差异。
87+
88+
### Benchmark 2:Tesseract vs PaddleOCR-VL 解析质量
89+
90+
```bash
91+
python scripts/benchmark_ocr_quality.py \
92+
--image_dir data/test_images \
93+
--ir_dir ./models/paddleocr_vl_ov \
94+
--tesseract_lang chi_sim+eng
95+
```
96+
97+
输出:
98+
99+
- `results/phase1/quality_compare.md` —— 并列对比 + 末尾人工评分表(手动填写)
100+
- `results/phase1/quality_compare/<img>/` —— 每张图的 `tesseract.txt``paddleocr_vl.md``diff.txt`、原图副本
101+
- `results/phase1/quality_compare.json` —— 结构化数据
102+
103+
> 评分填好后,把 `quality_compare.md` 末尾评分表的截图存入 `assets/`,作为 Notebook 演示证据。
104+
105+
---
106+
107+
## Phase 2 · 文档解析 + 切片
108+
109+
### 单文档
110+
111+
```bash
112+
python scripts/run_phase2_pipeline.py \
113+
--pdf data/test_documents/spec_with_tables.pdf \
114+
--out results/phase2 \
115+
--ir_dir ./models/paddleocr_vl_ov \
116+
--dpi 200
117+
```
118+
119+
输出(每份 PDF):
120+
121+
- `<name>.markdown` —— 全文 Markdown(保留页码注释)
122+
- `<name>.chunks.jsonl` —— 表格感知切片,每行 `{ "text": "...", "metadata": {...} }`
123+
- `<name>.summary.json` —— 解析时长 + 切片统计
124+
125+
### 批量
126+
127+
```bash
128+
python scripts/run_phase2_pipeline.py --pdf_dir data/test_documents --out results/phase2
129+
```
130+
131+
### 验证清单(来自 docs/开发手册.md)
132+
133+
- [ ] 三类 PDF 均能跑通:`text_pdf` / `scanned` / `spec_with_tables`
134+
- [ ] 检查 `text_pdf` 是否走了 text-layer 路径(看 summary 中 `num_ocr_pages`
135+
- [ ] 检查 `spec_with_tables` 的 chunks 是否每个表格行都附带表头
136+
- [ ] 检查 chunks 元数据:`{doc_name, page, section_title, kind}` 是否完整
137+
138+
### 切片规则简述
139+
140+
| Chunk 类型 | 触发 | 内容 | 元数据 |
141+
|------------|------|------|--------|
142+
| `text` | 普通段落 / 标题 | 200-500 字符语义段,超长按 50 字符 overlap 切分 | `doc_name, page, section_title, kind=text` |
143+
| `table_header` | Markdown 表格命中 | 表头 + 分隔符 | `+ row_count` |
144+
| `table` | 每个表格行 | 表头 + 分隔符 + 单行 | `+ row_index` |
145+
146+
表格行 chunk 携带表头是为了让 Embedding 阶段保留列上下文(解决"300W 是哪一列"的歧义)。
147+
148+
---
149+
150+
## 关联仓库
151+
152+
| 仓库 | 推理路径 | 用途 |
153+
|------|----------|------|
154+
| 本仓库 `doc-qna-openvino` | OpenVINO Runtime / GenAI · CPU/GPU/NPU | 进阶任务 #13 |
155+
| [`bob798/paddleocr-vl-qnn`](https://github.com/bob798/paddleocr-vl-qnn) | 高通 QNN SDK · Hexagon NPU 端侧 | 高通赛题(已拆分到独立仓库)|
156+
157+
两者共享文档解析的整体思路(PaddleOCR-VL → Markdown → 表格感知切片),但推理后端、量化策略、依赖完全独立。
158+
159+
---
160+
161+
## 后续 Phase(W3+)
162+
163+
- **W3 (Phase 3)**:BGE-small embedding + ChromaDB 入库 + Qwen2.5 INT4 问答
164+
- **W4 (Phase 4)**:Tesseract 全链路 vs PaddleOCR-VL 全链路对比评测
165+
- **W5 (Phase 5)**:Notebook 整理 + 提交
166+
167+
详见 [`../docs/项目计划.md`](../docs/项目计划.md)[`../docs/开发手册.md`](../docs/开发手册.md)

0 commit comments

Comments
 (0)