# Document-AI-System
**Repository Path**: xsmxsm/Document-AI-System
## Basic Information
- **Project Name**: Document-AI-System
- **Description**: 第一期:做一个大家都看得懂,好用的PDF文档提取工具。
第二期:加入通用Excel解析工具。这个功能只差前端界面了。
第三期:嵌入自然语言+LLM自动生成提取模板。
第四期:加入OCR,解析图片+扫描件PDF
第五期:支持AI D码
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-29
- **Last Updated**: 2026-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
PDF 模板化提取系统
把企业 PDF 单据处理,从一次性解析脚本升级为可配置、可复用、可审计的数据生产线。
面向采购订单、发票、对账单、物流单据等版式稳定但来源复杂的企业 PDF,
通过可视化规则工作台、模板版本管理、标准字段映射、批量执行与失败追溯,
稳定产出可交付给业务系统的结构化数据。
> **关键词**:模板化提取 / 可视化规则配置 / 模板版本管理 / 标准字段体系 / 批量执行与审计追溯
---
## 产品定位
PDF 模板化提取系统是一套面向企业单据 PDF 的结构化数据生产平台。
它将传统依赖开发维护的 PDF 解析脚本,升级为可视化配置、模板化复用、版本化管理和可审计执行的产品能力。系统支持从 PDF 上传预检、规则配置、模板发布、字段标准化、主流程执行到 JSON / Excel 导出的完整链路,适合长期处理采购订单、发票、对账单、物流单等版式稳定但来源复杂的企业文档。
相比单点 PDF 解析工具,本系统更关注企业落地中的四个问题:
- **规则如何复用**:通过模板草稿、发布校验和版本管理沉淀可复用规则资产。
- **字段如何统一**:通过语义字典、字段别名和标准化规则对齐企业字段体系。
- **执行如何稳定**:通过主流程、异步任务、失败重试和日志追踪支撑批量处理。
- **结果如何追溯**:通过字段结果、表格结果、标准化轨迹和导出记录形成审计闭环。
## 在线体验
测试环境访问地址:
[http://47.94.22.205:8080/](http://47.94.22.205:8080/)
## 它解决什么问题
企业里大量采购订单、发票、对账单、物流单据仍以 PDF 形式流转。传统处理方式通常会卡在三件事上:
- **一次性脚本多**:每新增一种供应商、客户或单据版式,都需要开发重新调整解析逻辑。
- **规则资产散**:提取规则散落在代码、脚本和临时配置里,难以复用、交接和持续维护。
- **过程不可控**:字段为什么没命中、模板是否可执行、结果如何标准化、失败能否重试,都缺少统一闭环。
本系统的核心价值,是把 PDF 提取从“能跑一次”变成“可以长期运营”:规则可以配置,模板可以发布,执行可以追踪,结果可以标准化,失败可以复盘。
## 核心亮点
### 1. 从“写脚本”变成“配模板”
传统 PDF 提取通常依赖一次性脚本。每新增一种供应商、客户或单据版式,都需要开发重新调整解析逻辑。
本系统将提取逻辑沉淀为模板资产:业务或实施人员可以在规则工作台中配置区域、字段、KV 规则和表格规则,并通过预览能力验证命中效果。
### 2. 从“能跑一次”变成“可长期运营”
系统不只关注单次提取结果,还覆盖模板草稿、发布校验、版本管理、归档恢复、执行记录、失败重试、导出记录和标准化轨迹。
这使 PDF 提取流程具备持续维护能力,适合长期处理大量客户、供应商和单据版式。
### 3. 从“字段抽出来”变成“数据能交付”
系统内置语义字典、字段别名、系统字段映射和标准化规则,不同模板提取出的字段可以统一对齐到企业内部字段体系。
最终结果不仅是解析文本,而是可以被业务系统、数据仓库或自动化流程直接消费的结构化数据。
### 4. 从“黑盒结果”变成“过程可追溯”
每次主流程执行都会保留运行记录、字段结果、表格结果、标准化轨迹、导出记录和失败重试链路。
当字段未命中、规则失效或结果异常时,可以回溯具体原因,而不是只能重新跑脚本或翻日志。
## 适用场景
本系统适合处理以下类型的 PDF 单据:
- 采购订单、销售订单、报价单、发票、对账单、物流单、装箱单等企业单据。
- 版式相对稳定,但字段位置、字段名称或表格结构存在差异的 PDF。
- 需要将 PDF 内容批量转成 JSON、Excel 或下游系统可消费数据的场景。
- 需要多人维护模板、追踪执行结果、复用历史规则的业务场景。
- 需要对字段做标准化、别名映射、枚举归一和结果审计的企业流程。
不适合:
- 完全无固定版式、强依赖语义理解的长文档阅读。
- 需要复杂视觉理解的扫描件,除非后续接入 OCR 能力。
- 只需要临时解析一两份文件的轻量场景。
## 产品闭环
系统围绕企业 PDF 单据处理构建完整闭环,而不是停留在单点解析能力:
1. **文档进入**:上传、预检、入池、状态管理。
2. **规则生产**:在工作台配置字段、区域、KV 和表格规则。
3. **模板沉淀**:保存草稿、发布校验、生成模板版本。
4. **语义对齐**:通过标准字段、别名映射和系统字段映射统一输出口径。
5. **批量执行**:使用可执行模板运行主流程,支持同步、异步、重试和日志。
6. **结果交付**:导出 JSON / Excel,并保留标准化轨迹和导出记录。
因此,本系统交付的不是一个 PDF parser,而是一套可持续运营的 PDF 数据生产平台。
```mermaid
flowchart LR
A["PDF 上传"] --> B["文件预检"]
B --> C["文档池"]
C --> D["规则引擎工作台"]
D --> E["模板草稿"]
E --> F["发布校验"]
F --> G["模板版本"]
G --> H["语义字典 / 字段别名"]
H --> I["可执行模板"]
I --> J["主流程执行"]
J --> K["字段提取 / 表格提取"]
K --> L["标准化规则"]
L --> M["JSON / Excel 导出"]
J --> N["日志 / 轨迹 / 重试"]
classDef primary fill:#e8f1ff,stroke:#1677ff,color:#0b2f66;
classDef success fill:#eaf8ef,stroke:#2e7d32,color:#143d1f;
classDef warning fill:#fff7e6,stroke:#d48806,color:#5f3b00;
class A,B,C,D,E,F,G primary;
class H,I,J,K,L,M success;
class N warning;
```
## 与常见方案对比
| 方案 | 优点 | 局限 | 本系统的改进 |
| --- | --- | --- | --- |
| 一次性 Python 脚本 | 开发快,适合单一版式 | 规则散落、难复用、难交接、难审计 | 将规则沉淀为模板,支持版本、发布、预览和复用 |
| 通用 OCR / PDF 工具 | 能获取文本或表格 | 缺少业务字段体系,结果不可控 | 面向业务字段配置规则,并提供标准化输出 |
| 大模型抽取 | 泛化能力强 | 成本、稳定性、可解释性和批量一致性存在挑战 | 用模板规则保障稳定性,用语义字典保障字段统一 |
| 人工录入 | 灵活 | 成本高、慢、易错、不可规模化 | 通过主流程批量执行,保留日志、重试和导出记录 |
## 核心关键词
- **Template-driven**:用模板承载规则,而不是把逻辑写死在脚本里。
- **Versioned**:模板可发布、归档、恢复,并从历史版本创建草稿。
- **Auditable**:执行日志、标准化轨迹、导出记录和重试链路完整保留。
- **Standardized**:字段别名、系统字段映射和标准化规则统一输出口径。
- **Production-ready**:支持同步 / 异步执行、任务状态、失败重试和结果下载。
## 系统截图
### 模板管理
模板中心沉淀可复用的规则资产,展示模板总量、启用状态、主流程可用性、字段对照状态和模板列表数据。

### 规则引擎工作台
规则引擎工作台加载真实 PDF 样本,展示区域配置、字段规则、命中高亮、字段编辑和草稿保存状态,把解析逻辑转化为可配置模板。

## 功能模块
| 模块 | 价值 |
| --- | --- |
| 上传预检 | 在文档进入系统时完成文件、文本层、页面准备等检查,避免低质量 PDF 进入后续链路。 |
| 文档池 | 统一管理上传文档,支持筛选、归档、恢复、重检,以及进入规则引擎或主流程。 |
| 规则引擎工作台 | 围绕 PDF 页面配置区域、字段、KV/表格规则,支持预览、草稿和导出预览。 |
| 模板管理 | 模板列表、版本详情、发布校验、归档恢复、从版本创建草稿和可执行模板筛选。 |
| 语义字典 | 管理标准字段、字段别名和系统字段映射,让不同模板输出可以对齐企业字段体系。 |
| 标准化配置 | 管理枚举、标准化规则和规则测试,支撑跨客户、跨模板的数据归一化。 |
| 主流程执行 | 基于可执行模板运行提取任务,支持同步/异步执行、运行记录、失败重试和日志追踪。 |
| 结果导出 | 管理导出记录,支持 JSON/Excel 结果交付、文件下载和校验信息返回。 |
```mermaid
mindmap
root((PDF 模板化提取系统))
文档入口
上传预检
文档池
生命周期流转
模板生产
规则引擎工作台
草稿保存
发布校验
版本管理
数据理解
标准字段
字段别名
系统字段映射
枚举配置
执行引擎
同步执行
异步任务
失败重试
执行日志
输出交付
JSON 导出
Excel 导出
标准化轨迹
下载校验
```
## 系统架构
```mermaid
flowchart TB
subgraph UI["Web 工作台"]
U1["文档池 / 上传预检"]
U2["规则引擎工作台"]
U3["模板管理"]
U4["语义字典 / 标准化配置"]
U5["主流程执行 / 导出记录"]
end
subgraph API["FastAPI 服务层"]
A1["documents"]
A2["rule-engine"]
A3["templates"]
A4["semantic-dictionary"]
A5["normalization"]
A6["main-flow"]
end
subgraph Domain["领域服务"]
D1["文档生命周期服务"]
D2["规则预览与执行服务"]
D3["模板发布与版本服务"]
D4["字段标准化服务"]
D5["主流程编排服务"]
D6["导出服务"]
end
subgraph Infra["基础设施"]
I1[("PostgreSQL")]
I2[("Redis")]
I3[("MinIO")]
I4["Celery Worker"]
end
UI --> API
API --> Domain
Domain --> I1
Domain --> I2
Domain --> I3
I2 --> I4
I4 --> Domain
```
## 快速开始
### 1. 启动基础服务
```bash
docker compose up -d postgres redis minio
```
### 2. 配置后端环境
```bash
cd backend
python -m venv .venv
.venv\Scripts\activate
pip install -e .[test]
```
根目录提供了 `.env.example`,可按需复制为 `.env` 并调整数据库、Redis、MinIO 和 CORS 配置。
### 3. 启动后端
```bash
cd backend
uvicorn app.main:app --reload
```
默认 API 前缀:
```text
http://localhost:8000/api/v1
```
### 4. 启动前端
```bash
cd frontend
npm install
npm run dev
```
默认前端地址:
```text
http://localhost:5173
```
## 技术栈
```text
frontend/ React + TypeScript + Vite + Ant Design + Zustand + PDF.js
backend/ FastAPI + Pydantic + SQLAlchemy + Celery + Redis
```
核心依赖:
- 前端:`React 18`、`TypeScript`、`Vite`、`Ant Design`、`pdfjs-dist`、`axios`、`zustand`
- 后端:`FastAPI`、`Pydantic v2`、`SQLAlchemy 2`、`psycopg`、`Celery`、`Redis`、`boto3`、`PyMuPDF`、`pdfplumber`、`openpyxl`
- 基础设施:`PostgreSQL 16`、`Redis 7`、`MinIO`、`Docker Compose`
## 常用命令
```bash
# 前端类型检查与构建
cd frontend
npm run lint
npm run build
# 后端测试
cd backend
pytest
# 基础服务
docker compose up -d postgres redis minio
docker compose down
```
## 演示路径
1. 上传一份带文本层的 PDF,完成预检。
2. 在文档池确认状态,并进入规则引擎工作台。
3. 配置区域、字段、KV 或表格规则,并用预览验证命中结果。
4. 保存草稿,完成发布校验,生成模板版本。
5. 维护字段别名和标准化配置,使模板达到可执行状态。
6. 从文档池进入主流程,选择模板执行提取任务。
7. 查看运行详情、日志、标准化轨迹和重试链路。
8. 导出 JSON 或 Excel,交付给下游系统。
## 联系方式
欢迎通过微信交流项目、试用反馈或合作需求。
QQ交流群:340596062