版本:v1.2.0
文档导读:
第 1-3 章(产品篇):适合所有阅读者。重点介绍产品核心能力、应用场景及业务流程。
第 4-6 章(技术篇):适合开发与测试人员。包含详细的 API 接口定义、鉴权方式及数据结构说明。
本产品是一款高性能的非结构化文档数据提取服务。它能够将不可编辑、难以分析的PDF 文档和图片,自动转换为机器可读、易于编辑的结构化数据(如 Excel、HTML、Markdown)。
系统采用异步智能处理机制,专为处理计算密集型的大型文档设计,支持高并发任务排队,确保在处理数百页财报或复杂文档时的稳定性。
本系统包含两大核心业务模块:财报解析 (Finance OCR) 与 通用文档解析 (DocParse)。
专为金融场景设计,解决财务报表数据提取难、对齐难的问题。支持从图像和 PDF 中提取表格数据,并进行语义理解。
为了满足不同业务需求,系统提供三种数据输出标准:
| 模式名称 | 业务含义 | 适用场景 |
|---|---|---|
| 基础模式 | 原样提取 | 和原文内容一一对应的结构,不做过多处理。 |
| 归一化模式 | 会计语义理解 | 需要系统自动识别会计科目(如将“货币资金”标准化),并进行借贷平衡校验。 |
| 矩阵模式 | Excel 映射 | 强烈推荐。系统将表格数据整理为二维数组,开发人员可直接将其导出为 Excel 文件,完美保留行列结构。 |
适用于通用的文档数字化场景,旨在将 PDF 还原为“可编辑文档”。
由于解析复杂文档(如 OCR 识别)需要时间,系统提供完整的任务状态管理:
这是非常关键的技术补充。细化私有化部署的架构和资源需求,不仅能展现产品的技术成熟度,还能直接打消客户(特别是IT部门)关于“资源消耗过大”或“部署复杂”的顾虑。
我将根据您提供的架构信息(3B/0.9B 模型、微服务架构、模型共用特性),为您重新撰写“4. 部署与服务模式”这一章节。
为了满足不同客户对数据安全、合规性及成本控制的需求,我们提供灵活的公有云与私有化部署方案。
私有化方案采用模块化设计,客户可按需部署:
该模块采用先进的微服务架构与多模态模型级联技术。
系统架构:由任务调度、流程编排、数据结构化等多个后端微服务组成,并配套可视化的前端校对平台。
算法引擎:
协同推理 (Cooperative Inference):利用高精度多模态大模型负责复杂的语义理解与逻辑校验,配合轻量级专用模型处理高频的结构提取与定位。
得益于深度的工程优化,系统在保持全精度推理的同时,将硬件门槛控制在合理范围。同时,针对特定行业的国产化需求,系统架构具备良好的兼容性与迁移能力。
1. 标准生产环境配置 (Standard) 基于主流通用架构(NVIDIA 生态),推荐如下配置以满足 日均 10,000+ 页 的解析需求:
| 资源类型 | 推荐规格 | 说明 |
|---|---|---|
| GPU (显卡) | NVIDIA A10 (24GB) 或 L4 × 1 | 推荐 24GB 显存起步。系统运行多模态大模型与辅助模型组,需预留充足显存以支持高分辨率图像处理及并发推理的动态显存需求(KV Cache)。 |
| CPU | Intel / AMD (16 Core+) | 承载微服务及 OCR 前后处理。 |
| 内存/存储 | 64GB RAM / 500GB SSD | 保障高并发下的数据流转与模型加载。 |
| 运行环境 | Docker / Kubernetes | 需安装 NVIDIA Container Toolkit。 |
2. 信创化改造支持说明 (Localization Capabilities) 针对金融、政务等领域的国产化替代需求,本系统底层架构支持向信创环境迁移与适配改造。
注:信创环境涉及底层算子与驱动的深度调试,具体适配方案需根据客户实际采购的硬件设施进行专项评估与部署实施。
https://insightdoc.memect.cn/在所有 API 请求的 Header 中需携带分配的 Secret Key (SK):
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxx
由于财报解析属于计算密集型任务,系统采用异步处理机制。标准调用流程如下:
sequenceDiagram
participant Client as 客户端
participant Server as 服务端
Client->>Server: POST /api/tasks (上传文件)
Server-->>Client: 返回 task_id (Status: pending)
loop 轮询状态
Client->>Server: GET /api/tasks/detail/{task_id}
Server-->>Client: 状态: processing
end
Client->>Server: GET /api/tasks/detail/{task_id}
Server-->>Client: 状态: done, 返回 result (JSON/Matrix)
/api/tasks 上传文件,获取 id (即 task_id)。id 定期调用 /api/tasks/detail/{task_id} 检查 status。pending (排队) -> processing (处理中) -> done (完成) 或 failed (失败)。status 为 done 时,响应体中的 result 及 revised_result 字段即为解析数据。将 PDF 文件解析并转换为 Markdown 格式,保留基础文本结构与表格内容。 pdf2md.py
将 PDF 文件按页转换为 PPTX 幻灯片,支持文本提取或页面图片渲染方式生成演示文稿。 pdf2pptx.py
上传文件并发起解析任务。
POST /api/tasksmultipart/form-data请求参数 (Body):
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| file | File | 是 | 需要解析的文件流。 1. 图片: 支持常规格式 (jpg, png等) 2. PDF: 文件大小不超过 50MB |
| task_type | String | 否 | 任务类型,默认为 finance_ocr (财报解析),docparse(文档解析)。 |
| file_name | String | 否 | 文件名(建议包含扩展名)。 |
| task_param | String | 否 | 扩展参数 (JSON字符串)。 |
响应示例 (200 OK):
{
"id": "b7b08f2e-d559-44b0-88e5-6b56eef6c227",
"task_name": "report.pdf",
"file_id": "5c3ded47-...",
"status": "pending",
"task_type": "finance_ocr",
"user_id": "admin",
"created_at": "2025-12-19T14:00:00",
"message": null
}
根据任务ID查询当前状态或获取最终解析结果。
GET /api/tasks/detail/{task_id}路径参数:
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| task_id | String | 是 | 任务唯一标识 |
查询参数 (Query):
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| result_type | String | 否 | 财报解析和文档解析都不同的结果数据类型。 |
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| extra_info | String | 否 | 文档解析存在两个版本,v1、v2两个版本的内容不一样,用户可以通过指定返回的版本信息得到解析结果 |
查询参数 (Query):
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| result_type | String | 否 | 结果类型控制。 - 空 (默认): 基础模式。 - md: markdown全文。- html: html格式。- block_md: Markdown数据块列表格式。- docx: word格式。 |
响应字段逻辑说明:
通用文档解析包含两个版本v1、v2
可以通过GET /api/tasks/detail/{task_id}下的参数extra_info:{"parse_version":"v2"}来指定查询的版本信息,v1和v2版本的内容不一样
所有API响应都包含相同的顶层结构:
id: 任务IDtask_name: 任务名称
file_id: 文件ID
file_url: 文件URL
status: 任务状态(此处均为"done")
duration: 处理耗时
result: 基础结果字段
revised_result: 修订后结果字段
refer_files: 参考文件集合,这里包含两个版本的内容,v1版本包含json、markdown、等形式的id,v2版本不仅包含id,也包含html、docx等的链接
task_type: 任务类型
message: 消息
user_id: 用户ID
task_param: 任务参数
other_info: 其他信息(包含V1和V2版本的状态和耗时)
解析结果包含 result 和 revised_result 字段,其结构根据 result_type 的不同而显著变化:
当 result_type 为空 (默认)
result 字段:null
revised_result 字段:null返回基础解析结果和参考文件链接,不包含特定格式的内容
当 result_type 为 md
result 字段:null
revised_result 字段:包含完整的Markdown格式文档内容,默认显示v1版本的内容。返回纯文本形式的Markdown内容,保持原文档的结构和格式
当 result_type 为 html
result 字段:null
revised_result 字段:包含完整的HTML格式文档内容,默认显示v1版本的内容。
返回结构化的HTML内容,保留原文档的布局和样式信息
当 result_type 为 block_md
result: null
revised_result: 包含块状结构的文档内容,默认显示v1版本的内容。blocks: 数组,每个元素包含:page_number: 页码响应示例(200 OK - result_type=默认):
{
"id": "93538828-80f9-474b-9db3-b194f33018dd",
"task_name": "0eea3c57-4934-744b-b0ea-0cdb277743ca_29",
"file_id": "ce6a42f5-3b2b-4e28-9534-c2ebeed393b1",
"file_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/21c27d9e-72ba-4664-906d-c52f2c8f2a87_0eea3c57-4934-744b-b0ea-0cdb277743ca.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T033843Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=9fcea6e02bc913e5bcc1711284afbf5166a050048b4c00e00e6eb04d8ffa6fa8",
"status": "done",
"duration": 2.9185240268707275,
"result": null,
"revised_result": null,
"refer_files": {
"json": "f6d2fe74-7ab8-4cc9-b883-744886972f5e",
"docx": "e317d0cf-2787-41c9-9873-f9fcb5747365",
"markdown": "9ae8c45b-fba3-4517-af60-4b60ddf9394f",
"pptx": "5dc8c9f6-4d22-42d6-ac70-86da307fece4",
"block_md": "9750e84c-3799-4bc8-b5a3-29551c909fbd",
"html": "81d0a0c1-1116-4fcb-bd94-bcacc1d13fd6",
"images": null,
"pages": {
"1.png": "7f3e3bc7-d9c9-4e14-b5e0-f5ba3b98b2b5",
"2.png": "7b89d029-c7c6-40c0-a87b-c6b0d5739920"
},
"json_v2": "ed68d914-16fc-4432-aecc-7cdaf7215036",
"markdown_v2": "23ad9526-30b9-4513-a783-542bc19a38c0",
"html_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/0e361d38-4886-4c72-bce8-f6f93807558b_doc.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T033843Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=70ee4eb9f7af9cb14b810cef38ec050cec462ab1146f0a93c94b46383ad4d9b1",
"pptx_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/0f904209-73f0-4800-a4d7-b4d1126770bc_doc.pptx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T033843Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=c15cf8d1107e49bb3d4be7a0549bb0b3a5e9d3493ab428eeb8c6b604874f2add",
"docx_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/8427473d-df4d-4c81-99fb-e4e61504cd60_doc.docx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T033843Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=330ae853b99ca8ca6f49beb2111dd031d8b3e90128cb97813bc044c38b8a3fd3"
},
"task_type": "docparse",
"message": "",
"user_id": "sk_d7ju2t",
"task_param": null,
"other_info": {
"duration_v1": 1.7794923782348633,
"status_v1": "done",
"duration_v2": 2.9110403060913086,
"status_v2": "done"
}
}
响应示例(200 OK - result_type=md,v1版本):
{
"id": "111d8192-00e9-4bd4-a983-c7d8aaa4210f",
"task_name": "0eea3c57-4934-744b-b0ea-0cdb277743ca_36",
"file_id": "e7188903-9b1a-4c74-9e73-e9c11a4ed3eb",
"file_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/25e02e45-8cd8-4ff3-853f-bacc1dc9e45e_0eea3c57-4934-744b-b0ea-0cdb277743ca.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T053232Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=5fe8ff2e4481c6dac8187c6a9654e15470bd5f51fd1de6afe939041f23330b34",
"status": "done",
"duration": 2.718078374862671,
"result": null,
"revised_result": "**股票简称:云南白药**\n\n**股票代码:000538**\n\n**公告编号:2023\\-20**\n\n**云南白药集团股份有限公司关于全资三级子公司完成私募投资基金管理人注销的公告**\n\n**本公司及董事会全体成员保证信息披露的内容真实、准确、完整,没有虚假记载、误导性陈述或重大遗漏。**\n\n云南白药集团股份有限公司(以下简称“云南白药”或“公司”)下属全资三级子公司海南云帆私募基金管理有限公司(以下简称“云帆基金公司”),由公司全资二级子公司云南白药集团(海南)有限公司持有100%股权,云帆基金公司于2021年在中国证券投资基金业协会(以下简称“基金业协会”)完成私募基金管理人备案登记,并在基金业协会备案了云帆1号私募证券投资基金。具体内容详见公司于2021年10月14日在巨潮资讯网(www\\.cninfo\\.com\\.cn)披露的《关于全资三级子公司完成私募投资基金备案的公告》(公告编号:2021\\-55)。\n\n近日,云帆基金公司在完成云帆1号私募证券投资基金清算后,在基金业协会完成了其私募基金管理人的注销登记,注销类型:主动注销。以上详细登记信息请查看基金业协会官方网站(http://www\\.amac\\.org\\.cn/)的公示信息。\n\n-------------------\n\n特此公告\n\n云南白药集团股份有限公司\n\n董 事 会\n\n2023年5月12日",
"refer_files": {
"json": "fd1632d1-cb85-4609-85e0-cc24cc85b61c",
"docx": "6c5af1d9-fecd-45e9-beeb-5d493986ee92",
"markdown": "c4cc4c10-1b6d-4858-b6a0-a48ab591dc0a",
"pptx": "d4c91ad4-88fb-4885-94df-6b2176f4c8e6",
"block_md": "82025fc6-4903-4a34-ab59-25a3b5587238",
"html": "e9726540-ef9e-4f4d-8a35-3d42bcd3cfe6",
"images": null,
"pages": {
"1.png": "131fedbd-50a4-486f-a371-4b4c2a838292",
"2.png": "818c1171-d842-44f6-9e37-a88afbc9660f"
},
"json_v2": "cf493de3-1fd6-4f59-bb6d-1d7424843ecd",
"markdown_v2": "28cf6868-df86-419f-aa0d-43365deb1ee0",
"html_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/7cf4ceae-4627-4eaa-909c-2afc801f0548_doc.html?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T053232Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0be59be1cc3bd0ad6bc9b46810dc0eb9ed844cc903f5218889cd4394f358f8c4",
"pptx_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/92095e22-90a1-4125-a889-6c44bcac2fa1_doc.pptx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T053232Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=2d4761dfa7dd648cdd296d83bde97b450d782c9edccbac772309e073c1f0ba98",
"docx_url": "https://insightdoc.memect.cn/file/ocr-apply/20260128/e7059296-f246-4785-8afd-7f752291b931_doc.docx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260128%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260128T053232Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=76ba513a26aaf95575c6ce950d63ab0adefa8734c87ac13b9fb1ec9363f33b5e"
},
"task_type": "docparse",
"message": "",
"user_id": "sk_d7ju2t",
"task_param": null,
"other_info": {
"duration_v1": 1.7670137882232666,
"status_v1": "done",
"duration_v2": 2.7119598388671875,
"status_v2": "done"
}
}
财报解析获取任务结果的相关说明。
查询参数 (Query):
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| result_type | String | 否 | 结果类型控制。 - 空 (默认): 基础模式。 - normalization: 归一化模式。- matrix: 矩阵模式。 |
响应字段逻辑说明:
解析结果包含 result 和 revised_result 字段,其结构根据 result_type 的不同而显著变化:
当 result_type 为空 (默认)
返回默认解析结果。result 字段包含原始 OCR 数据,将文字内容、坐标位置(bbox)、置信度等信息打包在同一个对象结构中。revised_result 为人工修正
返回默认解析结果。result 字段包含原始 OCR 数据,将文字内容、坐标位置(bbox)、置信度等信息打包在同一个对象结构中。revised_result 为人工修正后的结果(若无修正则与 result 一致)。
当 result_type 为 normalization
返回归一化处理结果。revised_result 包含经过财务语义理解后的结构化数据(如标准科目名称、行业分类、借贷平衡关系等)。
当 result_type 为 matrix
返回矩阵化数据。result 中的表格数据被拆分为两个独立的矩阵数组:
tables: 纯文本内容的二维数组。tables_coord: 与文本一一对应的坐标二维数组。此模式便于开发者直接将数据映射到 Excel 或其他表格处理软件中。
响应示例 (200 OK - result_type=matrix):
{
"id": "f2de4d56-ce5d-47be-b576-9e17922cc7c1",
"task_name": "08-合并资产负债表_14",
"file_id": "5e6e159e-8d6b-4aae-b93b-8c80f2b7ec32",
"file_url": "http://.../08-合并资产负债表.jpg?...",
"status": "done",
"duration": 15.832,
"result": [
{
"tables": [
[
[ "", "附注", "2024年12月31日", "2023年12月31日" ],
[ "流动资产:", "", "", "" ],
[ "货币资金", "六、(一)", "141,579,324.33", "275,237,984.55" ],
......
[ "资产总计", "", "1,957,448,719.76", "2,095,147,072.62" ]
]
],
"tables_coord": [
[
[ "0,0;0,0;0,0;0,0", "1055,394;1129,394;1129,431;1055,431", "1322,387;1550,387;1550,422;1322,422", "1673,381;1902,381;1902,416;1673,416" ],
[ "420,456;565,456;565,496;420,496", "0,0;0,0;0,0;0,0", "0,0;0,0;0,0;0,0", "0,0;0,0;0,0;0,0" ],
[ "436,502;577,502;577,545;436,545", "0,0;0,0;0,0;0,0", "1416,496;1606,496;1606,526;1416,526", "1766,489;1960,489;1960,523;1766,523" ],
......
[ "389,2816;528,2816;528,2857;389,2857", "0,0;0,0;0,0;0,0", "1354,2813;1569,2813;1569,2842;1354,2842", "1705,2807;1923,2807;1923,2840;1705,2840" ]
]
],
"type_index": 0,
"angle": 0
}
],
"revised_result": null,
"refer_files": null,
"task_type": "finance_ocr",
"message": "",
"user_id": "admin"
}
分页获取历史任务记录。
GET /api/tasks/history查询参数 (Query):
| 参数名 | 类型 | 必选 | 默认值 | 描述 |
|---|---|---|---|---|
| page | Integer | 否 | 1 | 页码 |
| page_size | Integer | 否 | 10 | 每页条数 (最大100) |
| task_name | String | 否 | - | 按任务名称筛选 |
| task_status | String | 否 | - | 按状态筛选 (done, processing 等) |
| task_type | String | 否 | - | 按类型筛选 |
对已解析的结果进行人工修正或更新。
PUT /api/tasks/{task_id}/reviseapplication/json请求参数 (Body):
{
"task_name": "修正后的文件名(可选)",
"revised_result": {
"data": { ... } // 修正后的完整数据结构,需符合 result 字段的结构
}
}
重置任务: PUT /api/tasks/{task_id}/reset
将任务状态重置,重新触发解析。
导出任务: GET /api/tasks/{task_id}/export
导出特定格式的任务结果。
删除任务: DELETE /api/tasks/{task_id}
删除指定任务记录。
| HTTP Code | 描述 | 处理建议 |
|---|---|---|
| 200 | 成功 | 请求处理成功,请进一步检查响应体中的 status 字段。 |
| 401 | 未授权 | 检查 Authorization Header 是否正确。 |
| 422 | 参数错误 | 检查必填参数、文件格式或文件大小是否符合要求。 |
| 500 | 服务器错误 | 请联系技术支持。 |