乐于分享
好东西不私藏

企业级 PDF 智能解析与 RAG 入库技术方案

企业级 PDF 智能解析与 RAG 入库技术方案

企业级 PDF 智能解析与 RAG 入库技术方案

适用范围:企业知识库、合同文档、制度文件、财报研报、招投标文件、扫描档案、图文混排资料的统一解析、结构化处理与 RAG 检索问答


1. 文档概述

1.1 背景

在企业知识管理、智能问答、合规检索、档案数字化等场景中,PDF 是最常见但也最复杂的文档载体之一。其复杂性主要体现在以下几个方面:

  • • 来源多样:包括 Office 导出的电子 PDF、扫描件 PDF、图文混排 PDF、表格型 PDF、图片嵌入型 PDF、签章版 PDF 等。
  • • 内容形态复杂:既包含纯文本,也可能包含图片、图表、公式、页眉页脚、多栏布局、表格、印章、水印、批注等信息。
  • • 解析质量差异大:不同 PDF 的文本层质量、OCR 难度、版面结构、图表密度差异显著。
  • • 业务要求高:企业场景不仅要求“能读出来”,更要求可追溯、可审计、可扩展、可控成本、可持续优化。

因此,企业级 PDF 处理不宜采用单一解析链路,而应建设一套面向生产环境的智能处理平台,按文档特征自动分流到最合适的处理路线,并统一输出为适合知识检索与 RAG 应用使用的标准知识对象。

1.2 建设目标

本方案旨在建设一套可规模化、可治理、可观测的企业级 PDF 智能处理平台,实现以下目标:

  1. 1. 建立自动化的 PDF 类型识别与分流体系。
  2. 2. 针对不同 PDF 类型采用最优处理策略:
    • • 纯文本 PDF:直接文本抽取与结构化入库;
    • • 扫描件 PDF:OCR + 版面恢复 + 质检入库;
    • • 图文混排 PDF:文本、表格、图表、图片的多模态联合处理。
  3. 3. 统一构建可用于向量检索、关键词检索、混合检索、问答溯源的知识对象。
  4. 4. 建立质量门控、人工复核、失败重试、监控告警、权限治理等生产能力。
  5. 5. 为企业级 RAG 提供稳定、可信、可扩展的底层文档处理基础设施。

1.3 适用对象

本技术方案适用于以下角色参考与实施:

  • • 企业架构师
  • • AI 平台研发团队
  • • 知识库与搜索平台研发团队
  • • OCR/文档智能化建设团队
  • • 运维与平台治理团队
  • • 项目管理与技术评审团队

2. 设计原则

整套系统遵循以下设计原则。

2.1 检测在前,处理分流

系统不假设所有 PDF 均适合同一条处理链路。所有文档在正式解析前,必须经过基础检测和分类,根据文档特征自动进入最合适的处理路线。

2.2 页面级处理优于文档级粗分类

现实中的 PDF 往往是混合型文档。例如同一份文件可能同时包含电子正文、扫描附件、财务图表和盖章页。因此建议采用文档级初判与页面级精分流结合的机制,避免整本文档误走同一条路线。

2.3 统一出口,屏蔽底层差异

无论底层采用文本抽取、OCR、表格识别还是多模态视觉理解,最终都应汇总为统一的知识对象模型,供上层索引、检索、问答和审计模块复用。

2.4 质量优先于吞吐

生产系统中,低质量解析结果进入知识库的危害通常大于暂时不入库。因此必须建立质量评估、置信度门槛与异常兜底机制。

2.5 人工复核是正式能力

人工复核不应被视为临时补丁,而应作为系统标准能力纳入设计,用于处理 OCR 低置信、图表识别异常、表格结构损坏、模型输出不稳定等场景。

2.6 成本与精度动态平衡

并非所有页面都值得调用昂贵的多模态大模型。系统应通过页面级分流、区域级处理和高价值文档分级策略,实现成本可控前提下的效果最优。


3. PDF 类型划分与总体处理思路

本方案建议将企业 PDF 至少划分为三类主处理路径。

3.1 类型 A:纯文本 PDF

定义

纯文本 PDF 指具备可用文本层、文本可直接提取、图片区域较少、整体版面较规则的文档。

典型文档

  • • Office 导出的制度文件
  • • 产品说明书
  • • 电子版合同
  • • 研究报告电子稿
  • • 公司内部流程文档

处理策略

  • • 直接抽取文本层;
  • • 保留章节结构、页码、段落边界、表格/图片引用;
  • • 进行结构化切块;
  • • 生成 embedding 并构建检索索引;
  • • 统一进入 RAG 知识库。

关键要求

纯文本 PDF 虽可直接进入 RAG 链路,但不应只做粗暴切块。生产环境中必须保留结构元数据,否则将影响精准召回、答案溯源与前端定位。

3.2 类型 B:扫描件 PDF

定义

扫描件 PDF 主要由页面图像构成,文本层缺失或无法直接使用,必须先完成 OCR 才能转化为可检索文本。

典型文档

  • • 纸质合同扫描版
  • • 盖章文件扫描版
  • • 发票、票据、报销单
  • • 历史档案 PDF
  • • 手机拍照合成 PDF

处理策略

  • • 页面转图;
  • • 图像增强预处理;
  • • OCR 识别;
  • • 版面分析与阅读顺序恢复;
  • • 低置信检测与人工复核;
  • • 结构化切块并入知识库。

关键要求

OCR 完成后不能直接将文本拼接入库,必须保留 bbox、置信度和版面信息,以支撑阅读顺序恢复、审计定位和人工校对。

3.3 类型 C:图文混排 PDF

定义

图文混排 PDF 指同时包含文本、图表、表格、流程图、截图、照片等视觉信息的复杂文档,单靠文本层无法完整表达语义。

典型文档

  • • 财报、年报、审计报告
  • • 行业分析报告
  • • 解决方案白皮书
  • • 医疗报告
  • • 工程说明资料
  • • 带流程图的制度文档
  • • 培训材料与汇报材料

处理策略

  • • 按页面进行区域分割;
  • • 将文本区、表格区、图表区、图片区分别送入对应解析链路;
  • • 对图表和图片补充视觉语义描述与结构化结果;
  • • 与周边正文上下文融合;
  • • 统一入库并构建多模态索引。

关键要求

图文混排文档不能仅依赖文本抽取。图表趋势、表格数据、流程步骤和界面截图等内容,往往是企业知识问答中的关键信息源。


4. 总体架构设计

4.1 架构分层

整体架构划分为以下八层:

  1. 1. 文档接入层
  2. 2. 预处理与安全校验层
  3. 3. 文档检测与分流层
  4. 4. 多路线解析处理层
  5. 5. 质量控制与人工复核层
  6. 6. 统一知识对象构建层
  7. 7. 存储与索引层
  8. 8. 检索与 RAG 服务层
  9. 4.2整体架构图

5. 文档接入与预处理设计

5.1 接入能力要求

接入层负责将各来源文档标准化地引入处理平台,建议支持:

  • • 单文件上传
  • • 批量上传
  • • OpenAPI 推送
  • • 目录同步
  • • 邮件抓取
  • • 第三方系统回调接入

同时应支持:

  • • 企业统一认证
  • • 租户隔离
  • • 文档分类标签
  • • 来源系统标识
  • • 保密等级标识
  • • 操作人信息记录

5.2 基础校验要求

所有 PDF 进入处理流程前,建议执行以下校验:

  1. 1. MIME 白名单校验仅允许合法 PDF 文件进入处理流程。
  2. 2. 文件大小限制例如单文件不超过 500MB,超大文件异步处理。
  3. 3. 页数限制例如默认 2000 页以内,超限文档走专用大文档队列。
  4. 4. SHA-256 哈希去重对重复文档命中缓存,避免重复解析。
  5. 5. 病毒扫描建议采用 ClamAV 或企业现有安全服务。
  6. 6. 原件归档原始 PDF 上传成功后应立即进入对象存储归档,避免散落在处理节点本地。

5.3 推荐实现

  • • API Gateway:Nginx / Kong / APISIX
  • • 上传服务:Spring Boot / Go
  • • 对象存储:S3 / MinIO / OSS / COS
  • • 去重键:tenant_id + sha256

6. 异步任务与队列设计

6.1 异步化必要性

PDF 解析链路中包含 OCR、版面分析、多模态理解、索引构建等耗时步骤,不适合同步阻塞上传请求。生产环境中应全部采用异步任务模式。

6.2 推荐队列划分

建议按照职责拆分多个主题或队列:

  • • pdf_ingest_queue:接入总入口
  • • pdf_classify_queue:文档分类队列
  • • pdf_text_parse_queue:纯文本解析队列
  • • pdf_ocr_queue:OCR 处理队列
  • • pdf_multimodal_queue:图文混合处理队列
  • • pdf_review_queue:人工复核队列
  • • pdf_index_queue:索引构建队列
  • • pdf_retry_queue:失败重试队列
  • • pdf_dlq:死信队列

6.3 消息体建议字段

消息体至少应包含以下字段:

  • • doc_id
  • • tenant_id
  • • source_uri
  • • sha256
  • • priority
  • • document_type
  • • page_ranges
  • • retry_count
  • • trace_id
  • • operator
  • • security_level

6.4 技术建议

  • • Kafka:高吞吐、适合大型企业平台
  • • RabbitMQ:流程控制清晰、适合中等规模
  • • SQS:适合云原生场景

7. 文档检测与分流设计

文档检测与分流是整个系统的核心中枢,其目标是用最小成本判断文档和页面最适合进入哪条处理链路。

7.1 检测目标

需要回答以下问题:

  1. 1. 文档是否具备可直接使用的文本层?
  2. 2. 哪些页面属于扫描页?
  3. 3. 哪些页面包含表格、图表、图片密集区域?
  4. 4. 是否需要进入高精度处理模式?
  5. 5. 是否需要进入人工复核队列?

7.2 推荐检测顺序

第一步:PDF 基础信息提取

提取以下信息:

  • • 总页数
  • • 页面对象数量
  • • 字体对象数量
  • • 图片对象数量
  • • 是否存在文本层
  • • 页面尺寸
  • • 文件元信息

工具建议:

  • • PyMuPDF
  • • pdfplumber
  • • pypdf

第二步:文本层可用性检测

按页统计:

  • • 提取字符数
  • • 有效字符比例
  • • 乱码率
  • • 重复字符率
  • • 空白率

判定建议:

  • • 每页有效字符数较高且乱码率低,可判为文本页;
  • • 虽存在文本层但内容大量乱码或无序时,不应直接视为文本页。

第三步:图像占比检测

按页统计:

  • • 图像区域面积占比
  • • 图片对象个数
  • • 大图覆盖率
  • • 图像分辨率估算

判定建议:

  • • 图像面积占比较高且字符数极少时,通常视为扫描页。

第四步:版面复杂度检测

检测:

  • • 多栏布局
  • • 表格密度
  • • 图表区域
  • • 标题区块
  • • 页眉页脚重复模式

工具建议:

  • • LayoutParser
  • • Detectron2
  • • PaddleOCR Layout 系列能力

第五步:页面级分类

页面标签建议定义为:

  • • TEXT
  • • SCANNED
  • • TABLE_HEAVY
  • • CHART_HEAVY
  • • IMAGE_HEAVY
  • • MIXED
  • • LOW_CONFIDENCE

第六步:文档级汇总判定

按页面分布汇总:

  • • 以文本页为主,进入路线 A;
  • • 以扫描页为主,进入路线 B;
  • • 多种页面混杂,进入路线 C;
  • • 低置信页面占比较高,进入增强处理或人工复核。

7.3 规则示意

if text_chars_per_page >= 100 and image_area_ratio < 0.4:    route = Aelif text_chars_per_page < 30 and image_area_ratio > 0.8:    route = Belse:    route = C

生产环境中,建议基于以下特征建立综合评分:

  • • has_text_layer_score
  • • ocr_needed_score
  • • layout_complexity_score
  • • chart_density_score
  • • table_density_score
  • • image_dominance_score

优先从规则引擎起步,后续根据实际数据演进为轻量分类模型。


8. 路线 A:纯文本 PDF 处理方案

8.1 处理目标

以最低成本和较高吞吐,尽可能完整保留文档语义与结构,生成可直接用于 RAG 和检索的知识片段。

8.2 标准处理流程

  1. 1. 文本提取
  2. 2. 文本清洗
  3. 3. 结构恢复
  4. 4. 章节与段落识别
  5. 5. 表格/图片占位识别
  6. 6. 语义切块
  7. 7. 元数据补齐
  8. 8. Embedding 生成
  9. 9. 索引入库

8.3 文本提取工具建议

建议优先使用:

  1. 1. PyMuPDF性能好,页面对象提取能力强。
  2. 2. pdfplumber对版面辅助处理更友好,可作为补充或校验。
  3. 3. Apache Tika可作为通用兜底工具。

推荐策略:

  • • 主引擎:PyMuPDF
  • • 兜底引擎:pdfplumber

8.4 文本清洗规范

生产级清洗建议包括:

  • • 去除连续空白字符
  • • 去除重复页眉页脚
  • • 去除页码污染
  • • 去除水印残留文本
  • • 合并被错误断开的段落
  • • 修复乱码字符
  • • 统一全角半角
  • • 标准化标点
  • • 保留原始换行信息辅助结构恢复

注意:清洗不能破坏原始结构语义,标题、编号、列表和表格前后说明必须尽量保留。

8.5 结构恢复要求

应尽量恢复以下结构信息:

  • • 标题层级:H1 / H2 / H3
  • • 段落边界
  • • 列表项
  • • 表格引用
  • • 图片引用
  • • 页码边界
  • • 章节路径

结构化对象示例:

{  "doc_id": "DOC123",  "page": 12,  "section_path": ["第三章", "2.1 风险控制", "2.1.3 审批流程"],  "block_type": "paragraph",  "text": "……"}

8.6 切块策略

企业环境中不建议采用单纯固定长度切块,推荐父子切块策略。

父块

  • • 目标:保留完整语义上下文
  • • 建议大小:800~1500 tokens

子块

  • • 目标:提升精准召回能力
  • • 建议大小:200~400 tokens

切块边界优先级

  1. 1. 章节边界
  2. 2. 段落边界
  3. 3. 列表边界
  4. 4. 表格前后说明边界
  5. 5. 句号或换行边界
  6. 6. 最后才按 token 强切

不建议做法

  • • 全文按固定 token 粗暴切块
  • • 忽略页码与章节信息
  • • 一个 chunk 跨越多个主题段落

9. 路线 B:扫描件 PDF 处理方案

9.1 处理目标

将不可直接提取文本的扫描页,转换为高质量、可结构化、可检索、可追溯的知识对象。

9.2 标准处理流程

  1. 1. 页面转图
  2. 2. 图像增强预处理
  3. 3. OCR 识别
  4. 4. 版面分析
  5. 5. 阅读顺序恢复
  6. 6. 表格/印章/水印处理
  7. 7. 低置信检测
  8. 8. 人工复核分流
  9. 9. 结构化切块与入库

9.3 图像预处理要求

建议至少包括以下步骤:

  • • 去噪
  • • 倾斜校正
  • • 自适应二值化
  • • 对比度增强
  • • 亮度修复
  • • 分辨率补齐至约 300 DPI
  • • 黑边与阴影去除
  • • 页面边缘裁切

可选增强:

  • • 手机拍照透视校正
  • • 背景纹理抑制
  • • 手写区域增强
  • • 印章干扰弱化

工具建议:

  • • OpenCV
  • • Pillow
  • • ImageMagick

9.4 OCR 引擎选型

建议采用分层引擎策略。

开源基础层

  • • PaddleOCR:中文能力较强,适合通用场景
  • • Tesseract 5:英文基础能力较好,可作为低成本兜底

商业高精度层

  • • Azure Document Intelligence
  • • Google Document AI
  • • AWS Textract
  • • 百度智能云 OCR
  • • 阿里云 OCR

推荐策略

  • • 普通文档:PaddleOCR
  • • 高价值关键文档:商业 OCR 或专项模型
  • • 特定票据类文档:专票/表单模型优先

9.5 OCR 输出结构要求

OCR 输出不应仅保留纯文本,应至少包含以下信息:

{  "page": 5,  "blocks": [    {      "bbox": [x1, y1, x2, y2],      "text": "合同编号",      "confidence": 0.96,      "type": "text"    }  ]}

必须保留:

  • • bbox 坐标
  • • 文本内容
  • • 置信度
  • • 行块关系
  • • 页面尺寸
  • • 原图引用

9.6 版面分析与阅读顺序恢复

需要重点解决:

  • • 多栏文本串行
  • • 标题与正文顺序错乱
  • • 页眉页脚混入正文
  • • 表格内容混入段落
  • • 批注与印章干扰

推荐处理方法:

  1. 1. 识别文本区、表格区、图片区、页眉页脚区;
  2. 2. 按版面结构建立阅读顺序;
  3. 3. 页眉页脚与正文分离;
  4. 4. 表格区域进入表格解析器。

工具建议:

  • • LayoutParser
  • • PaddleOCR PP-Structure
  • • 商业 Document AI 的 layout 输出

9.7 OCR 质量门控

建议关注以下指标:

  • • 平均字符置信度
  • • 低置信词占比
  • • 空白页率
  • • 乱码率
  • • 重复识别率
  • • 阅读顺序完整性评分

建议门槛示例:

  • • 页面平均置信度低于阈值:进入复核
  • • 低置信文本块占比较高:切换引擎或增强图像后重跑
  • • 多页连续空白:触发质量告警
  • • 文档整体有效字符过低:不入库

10. 路线 C:图文混排 PDF 处理方案

10.1 处理目标

同时保留文档中的文本知识、表格知识、图表知识和图片语义,构建适用于多模态检索与问答的统一知识库。

本路线的目标不是“把复杂页面解释得差不多”,而是将一页图文混排 PDF 拆解为一组可管理、可追踪、可重跑、可审计的标准知识对象,使研发团队能够明确知道每一步做什么、输入输出是什么、失败时如何处理。

10.2 实现原则

路线 C 的实现建议遵循以下原则:

  1. 1. 先分区,后处理不直接把整页 PDF 送给多模态模型,而是先做版面切分,再按区域类型调用不同能力。
  2. 2. 同页内按区域复用已有链路文本区复用路线 A 或路线 B,表格区走表格解析链路,图表区走图表理解链路,避免重复建设。
  3. 3. 统一结构化输出每个区域最终都要产出标准知识对象,而不是散落成多种非统一格式。
  4. 4. 先抽取事实,再生成摘要对图表和表格,优先输出结构化字段,再根据结构化字段生成自然语言摘要,避免直接生成不可校验的描述。
  5. 5. 保留原始坐标与证据所有区域都必须保留页面坐标、页面号、裁剪图地址、原文邻接关系,用于前端溯源和人工复核。

10.3 页面级处理总流程

建议将图文混排页的处理拆成如下 11 个步骤:

  1. 1. PDF 页面渲染为标准图片
  2. 2. 页面级初筛,判断是否进入路线 C
  3. 3. 页面区域检测,产出页面区块列表
  4. 4. 区块标准化与排序,建立阅读顺序
  5. 5. 按区块类型路由到对应处理器
  6. 6. 文本区提取正文与标题
  7. 7. 表格区提取二维结构与文本摘要
  8. 8. 图表区提取图表类型、关键值和趋势摘要
  9. 9. 图片区提取 caption 与视觉向量
  10. 10. 进行跨区块融合,补齐上下文关系
  11. 11. 统一生成知识对象并入库

建议按页异步处理,单页处理完成后即可入后续索引队列,不必等待整本文档全部完成。

10.4 页面输入与处理结果定义

为便于研发实现,建议先定义路线 C 的页面输入输出。

页面输入对象

{  "doc_id": "doc_001",  "tenant_id": "t_001",  "page": 12,  "pdf_uri": "s3://bucket/a.pdf",  "page_image_uri": "s3://bucket/pages/doc_001/12.png",  "width": 2480,  "height": 3508,  "dpi": 300,  "security_level": "internal"}

页面输出对象

{  "doc_id": "doc_001",  "page": 12,  "page_type": "mixed",  "regions": [],  "knowledge_blocks": [],  "page_confidence": 0.92,  "route": "C"}

其中:

  • • regions 表示版面检测出的页面区域;
  • • knowledge_blocks 表示最终可入库的统一知识块;
  • • page_confidence 表示该页整体处理质量评分。

10.5 页面进入路线 C 的判定规则

建议当页面满足以下任一条件时进入路线 C:

  • • 文本层存在,但图片、表格或图表区域占比高;
  • • 版面检测到 2 个及以上异构区域类型;
  • • 页面中存在明确图表、表格或流程图;
  • • 文本可抽取,但正文占比不足以表达页面主要语义;
  • • 页面分类器输出 MIXEDTABLE_HEAVYCHART_HEAVY 或 IMAGE_HEAVY

建议的工程判定逻辑如下:

if chart_count >= 1:    route = Celif table_count >= 1 and text_area_ratio < 0.8:    route = Celif image_area_ratio >= 0.35 and text_area_ratio >= 0.2:    route = Celif region_type_count >= 2:    route = Celse:    route = A or B

10.6 区域检测与标准化

页面进入路线 C 后,第一步不是 OCR,也不是调用多模态模型,而是先做区域检测。

10.6.1 区域类型定义

建议页面区域类型固定为以下枚举:

  • • title_block
  • • text_block
  • • list_block
  • • table_block
  • • chart_block
  • • figure_block
  • • formula_block
  • • header
  • • footer
  • • stamp
  • • signature
  • • unknown

10.6.2 区域检测输出格式

{  "region_id": "r_12_003",  "page": 12,  "region_type": "chart_block",  "bbox": [240, 820, 1960, 1680],  "score": 0.95,  "page_image_uri": "s3://bucket/pages/doc_001/12.png"}

10.6.3 区域检测实施建议

  • • 对电子 PDF,优先结合 PDF 对象信息和页面图像做联合判断;
  • • 对扫描页,优先基于页面图像做区域检测;
  • • 对低置信区域保留 unknown 类型,不强行归类;
  • • 对明显重叠区域进行后处理去重,避免同一区域被重复处理。

10.6.4 区域后处理规则

建议在检测后增加一轮标准化:

  1. 1. 合并高度重叠的同类框;
  2. 2. 删除面积过小的噪声框;
  3. 3. 将页眉页脚与正文块分离;
  4. 4. 给所有区域分配稳定 region_id
  5. 5. 基于坐标排序,生成页面阅读顺序 reading_order

阅读顺序建议采用:

  • • 先按上边界 y1 排序;
  • • 对同一行的区域,再按左边界 x1 排序;
  • • 多栏页面增加“列聚类”规则,避免左右栏串行。

10.7 路由层设计

区域检测完成后,系统应进入“区域路由器”阶段。该组件的作用是根据 region_type 把每个区域分发到正确的处理器。

建议映射如下:

region_type
处理器
说明
title_block
文本处理器
提取标题并参与章节路径恢复
text_block
文本处理器
提取正文,必要时 OCR
list_block
文本处理器
识别列表结构
table_block
表格处理器
提取表头、行列关系和摘要
chart_block
图表处理器
提取图表类型、关键值、趋势
figure_block
图片处理器
生成 caption 与图像 embedding
formula_block
公式处理器或降级为图片处理器
根据业务需要决定
header/footer
噪声处理器
默认不入正文,可单独保留
stamp/signature
噪声处理器
默认不入检索正文
unknown
回退处理器
OCR + 人工复核候选

10.8 文本区处理方案

文本区的处理不要单独再造一套链路,而是复用路线 A 或路线 B。

10.8.1 判定规则

对每个 text_block 或 title_block

  • • 若该区域可直接提取文本层,则走路线 A 的文本抽取逻辑;
  • • 若文本层缺失或质量差,则把区域裁剪为图片,走 OCR 逻辑;
  • • 若区域内含大量噪声或印章干扰,则优先做局部图像增强再 OCR。

10.8.2 输出要求

文本区建议输出:

{  "region_id": "r_12_001",  "region_type": "text_block",  "content": "审批流程分为提交、复核、归档三个阶段。",  "section_path": ["第四章", "审批机制"],  "confidence": 0.98,  "bbox": [180, 260, 2100, 760]}

10.8.3 标题与正文关系恢复

如果页面中存在 title_block,应将其与其后的正文块绑定,作为 section_path 的候选来源。实现时建议:

  • • 标题块不单独孤立入库;
  • • 标题块同时参与父块构建;
  • • 后续正文块继承最近的标题路径。

10.9 表格区处理方案

表格区的关键不是“识别出文字”,而是恢复表格结构。

10.9.1 处理步骤

  1. 1. 裁剪表格区域;
  2. 2. 判断表格来源:电子表格还是扫描表格;
  3. 3. 电子表格优先使用表格结构提取工具;
  4. 4. 扫描表格先 OCR,再做单元格检测与结构恢复;
  5. 5. 生成二维表结构;
  6. 6. 对表格生成摘要文本;
  7. 7. 将结构化结果与摘要同时入库。

10.9.2 表格输出要求

至少保留以下字段:

{  "region_id": "r_12_004",  "region_type": "table_block",  "table_title": "2025-2026年营收情况",  "headers": ["季度", "营收", "同比增长"],  "rows": [    ["Q1", "1.2亿", "15%"],    ["Q2", "1.5亿", "18%"]  ],  "summary": "表格展示 2025 年 Q1 与 Q2 营收及同比增长,Q2 高于 Q1。",  "confidence": 0.91,  "bbox": [200, 1700, 2200, 2500]}

10.9.3 表格摘要生成建议

表格摘要不要直接让大模型自由发挥,建议基于结构化数据生成,至少包含:

  • • 表格标题
  • • 行列维度说明
  • • 关键数值
  • • 对比关系或趋势

10.9.4 表格失败兜底

若表格结构恢复失败:

  • • 保留 OCR 文本作为临时降级结果;
  • • 标记 table_structure_failed = true
  • • 对高价值文档进入人工复核。

10.10 图表区处理方案

图表区是路线 C 最容易写得空泛、也最容易在实施中失控的部分。要真正落地,必须拆成固定步骤。

10.10.1 图表处理步骤

  1. 1. 裁剪图表区域;
  2. 2. 检测图表标题、图例、坐标轴、数据标签;
  3. 3. 识别图表大类;
  4. 4. 调用视觉模型提取关键数值与趋势;
  5. 5. 生成结构化 JSON;
  6. 6. 基于 JSON 生成简洁可控的自然语言摘要;
  7. 7. 与图注和邻接正文融合后入库。

10.10.2 图表类型建议枚举

  • • bar_chart
  • • line_chart
  • • pie_chart
  • • scatter_plot
  • • radar_chart
  • • flow_chart
  • • org_chart
  • • timeline
  • • unknown_chart

10.10.3 图表输出结构

{  "region_id": "r_12_005",  "region_type": "chart_block",  "chart_type": "bar_chart",  "title": "季度营收同比增长",  "x_axis": "季度",  "y_axis": "同比增长",  "key_values": [    {"label": "Q1", "value": "15%"},    {"label": "Q2", "value": "18%"}  ],  "trend": "upward",  "summary": "图表显示 Q2 的同比增长高于 Q1,整体呈上升趋势。",  "confidence": 0.88,  "bbox": [220, 900, 2160, 1680]}

10.10.4 图表提示词设计要求

如果采用 Vision LLM,提示词应固定要求模型输出 JSON,不允许只输出自然语言。提示词至少要约束:

  • • 图表类型;
  • • 标题;
  • • 横轴、纵轴;
  • • 可识别的关键值;
  • • 趋势判断;
  • • 不确定字段填 null
  • • 禁止编造看不清的数据。

10.10.5 图表结果校验

图表输出后必须做程序校验:

  • • JSON schema 是否合法;
  • • chart_type 是否在允许范围内;
  • • key_values 是否为空;
  • • 关键数值是否格式异常;
  • • summary 是否与结构化字段矛盾。

校验失败时建议:

  1. 1. 重试一次更强模型;
  2. 2. 若仍失败,退化为图片 caption;
  3. 3. 高价值页送人工复核。

10.11 图片区处理方案

对于普通图片、截图、流程图、实物照片等区域,处理目标是补充“图片在表达什么”,而不是强求还原全部细节。

10.11.1 处理步骤

  1. 1. 裁剪图片区域;
  2. 2. 识别图片类型;
  3. 3. 生成简洁 caption;
  4. 4. 生成图像 embedding;
  5. 5. 结合相邻正文生成上下文描述;
  6. 6. 统一入知识库。

10.11.2 图片输出格式

{  "region_id": "r_12_006",  "region_type": "figure_block",  "figure_type": "screenshot",  "caption": "图片展示了审批系统中的待办列表页面。",  "context_text": "该界面用于审批人员查看待处理任务。",  "confidence": 0.9,  "bbox": [260, 2540, 2000, 3300]}

10.11.3 图片处理边界

  • • 对普通照片和截图,不要求还原所有小字;
  • • 若截图中包含大段关键文字,应拆出文本区额外 OCR;
  • • 若图片区实质是流程图或组织架构图,应优先归入 chart_block 或特殊图示类,而不是普通图片。

10.12 跨区域融合与上下文补齐

路线 C 真正决定效果的,不是单个区域处理得多好,而是最后能不能把页面重新组织成有上下文的知识片段。

10.12.1 为什么要做融合

如果各区域独立入库,会出现以下问题:

  • • 图表摘要缺少图注语境;
  • • 表格不知道属于哪一章节;
  • • 图片说明与正文脱节;
  • • 页面问答时无法正确拼接上下文。

10.12.2 融合规则建议

对每个非文本区域,补齐以下上下文:

  • • 最近标题块
  • • 最近上方正文块
  • • 最近下方图注或说明块
  • • 所属章节路径
  • • 页面阅读顺序前后邻居

示例:

  • • 图表块上方 150px 内有标题块,则将其作为图表标题候选;
  • • 图表下方 120px 内有短文本块,则将其识别为图注候选;
  • • 表格前后的说明段落可作为摘要生成辅助上下文。

10.13 统一知识块构建规则

完成区域处理和跨区融合后,必须将所有结果转换为统一知识块。

建议一页图文混排页面最终至少生成以下几类知识块:

  1. 1. 页面正文知识块
  2. 2. 表格知识块
  3. 3. 图表知识块
  4. 4. 图片说明知识块
  5. 5. 页面级摘要块

页面级摘要块建议

页面级摘要块不是必须直接给用户展示,但它对检索很有帮助。建议汇总本页的:

  • • 标题
  • • 正文主题
  • • 表格摘要
  • • 图表摘要
  • • 图片摘要

10.14 路线 C 的推荐工程拆分

为了便于落地,建议把路线 C 拆成以下几个独立服务或模块:

  1. 1. page-renderer:页面渲染
  2. 2. layout-detector:区域检测
  3. 3. region-router:区域路由
  4. 4. text-region-parser:文本区域处理
  5. 5. table-region-parser:表格区域处理
  6. 6. chart-region-parser:图表区域处理
  7. 7. figure-region-parser:图片区处理
  8. 8. context-fuser:上下文融合
  9. 9. knowledge-builder:统一知识块构建
  10. 10. quality-gate:质量门控与复核分流

这样的拆分便于:

  • • 独立扩容;
  • • 局部重试;
  • • 替换单个解析器;
  • • 跟踪每一类区域的错误率。

10.15 质量门控与失败处理

路线 C 必须明确失败处理,否则非常难运维。

页面级检查项

  • • 是否存在有效区域;
  • • 区域总面积是否异常;
  • • 关键区域是否全部处理完成;
  • • 页面是否生成了可入库知识块;
  • • 页面级置信度是否达标。

区域级检查项

  • • 文本区是否抽取到有效文本;
  • • 表格区是否恢复出表头与行数据;
  • • 图表区是否成功输出结构化 JSON;
  • • 图片区是否生成 caption;
  • • unknown 区域比例是否过高。

建议失败策略

  • • 单个区域失败:允许局部降级,不阻塞整页;
  • • 核心区域失败:整页标记 partial_success
  • • 图表结构化失败:退化为 caption;
  • • 表格结构化失败:退化为 OCR 文本;
  • • 页面整体低置信:进入人工复核。

10.16 路线 C 的最小可落地版本

如果团队希望先落地一个能上线的版本,建议最小版本只做以下能力:

  1. 1. 页面区域检测;
  2. 2. 文本区复用路线 A/B;
  3. 3. 表格区输出结构化表格 + 简单摘要;
  4. 4. 图表区先输出 caption + 粗粒度图表类型;
  5. 5. 图片区输出 caption;
  6. 6. 完成统一知识块入库;
  7. 7. 完成页码、bbox、原图溯源。

等最小版本跑稳后,再逐步增强:

  • • 图表关键数值抽取;
  • • 流程图结构理解;
  • • 组织架构图关系抽取;
  • • 更复杂的页面级摘要生成。

11. 统一知识对象模型设计

统一知识对象模型是整个系统可持续演进的关键。

11.1 设计目标

通过统一数据出口,屏蔽不同解析链路的差异,支撑以下能力:

  • • 统一索引构建
  • • 统一检索接口
  • • 统一前端展示
  • • 统一权限控制
  • • 统一审计与回溯

11.2 推荐结构

{  "knowledge_id": "kg_001",  "doc_id": "doc_123",  "tenant_id": "t_001",  "page": 10,  "block_id": "blk_10_03",  "block_type": "paragraph",  "modality": "text",  "content": "审批流程分为提交、复核、归档三个阶段。",  "section_path": ["第四章", "审批机制"],  "bbox": [100, 120, 820, 240],  "parent_block_id": "parent_10_01",  "source_file_uri": "s3://bucket/xxx.pdf",  "source_image_uri": "s3://bucket/pages/10.png",  "confidence": 0.97,  "parser_route": "A",  "security_level": "internal",  "version": 3,  "created_at": "2026-06-09T10:00:00Z"}

11.3 建议枚举字段

block_type

  • • title
  • • paragraph
  • • list
  • • table
  • • table_summary
  • • figure
  • • chart
  • • chart_summary
  • • image_caption
  • • footer
  • • header
  • • signature
  • • stamp

modality

  • • text
  • • table
  • • image
  • • chart
  • • mixed

12. 存储与索引设计

12.1 存储分层建议

1)对象存储

保存:

  • • 原始 PDF
  • • 页面图片
  • • 图表裁剪图
  • • OCR 中间结果
  • • 人工修订版本

推荐:S3 / MinIO / OSS

2)关系型数据库

保存:

  • • 文档元信息
  • • 处理状态
  • • 任务日志
  • • 审计记录
  • • 版本关系
  • • 权限信息

推荐:PostgreSQL

3)全文检索引擎

保存:

  • • 原始文本
  • • 结构化文本
  • • 表格摘要
  • • 图表摘要
  • • 高亮定位字段

推荐:Elasticsearch / OpenSearch

4)向量数据库

保存:

  • • 文本 embedding
  • • 图像 embedding
  • • 多模态 embedding

推荐:Qdrant / Milvus / pgvector / Pinecone

12.2 双引擎检索必要性

企业场景中,很多查询不仅依赖语义,还依赖精确关键词,例如:

  • • 文件编号
  • • 合同编号
  • • 专有名词
  • • 固定条款
  • • 日期与百分比

因此推荐采用全文检索 + 向量检索的混合方案,而不是单一语义检索。


13. RAG 检索与生成方案

13.1 标准检索流程

  1. 1. 查询理解
  2. 2. 权限过滤
  3. 3. 向量检索 topK
  4. 4. 全文检索 topK
  5. 5. RRF 融合
  6. 6. Cross-Encoder 精排
  7. 7. 上下文组装
  8. 8. 大模型生成
  9. 9. 溯源返回

13.2 召回与排序建议

  • • 向量检索:topK = 20 ~ 50
  • • 全文检索:topK = 20 ~ 50
  • • 融合方式:RRF
  • • 精排:Cross Encoder 或 reranker 模型
  • • 最终送生成模型上下文:top 5 ~ 10

13.3 上下文组装原则

上下文组装时,建议:

  • • 合并同页相邻 chunk
  • • 补充所属章节标题
  • • 保留图表摘要与图注
  • • 同一表格优先保持整体
  • • 附加页码、文档名、块类型等溯源信息

13.4 溯源要求

最终回答建议同时返回:

  • • 文件名
  • • 页码
  • • 章节路径
  • • 证据片段摘要
  • • 原文定位信息

该能力是提升企业用户信任度的关键。


14. 质量控制与人工复核设计

14.1 质量控制原则

系统应遵循“不合格不入库”的原则。低质量解析结果若直接进入知识库,将长期污染检索与问答效果。

14.2 质量门控点

建议设置以下门控环节:

接入前

  • • MIME 合法性
  • • 病毒扫描
  • • 文件完整性

分类后

  • • 路线判定置信度

抽取后

  • • 字符数
  • • 乱码率
  • • 重复率

OCR 后

  • • 平均置信度
  • • 阅读顺序评分
  • • 空白页率

多模态后

  • • JSON schema 校验
  • • 图表字段缺失率
  • • 数值识别合理性

入库前

  • • 页数一致性
  • • chunk 数量异常检测
  • • embedding 非法值检测

14.3 人工复核触发条件

满足任一条件时可进入人工复核:

  • • OCR 平均置信度过低
  • • 页面分类低置信
  • • 图表理解输出缺关键字段
  • • 表格结构损坏严重
  • • 用户反馈命中结果错误
  • • 高价值文档要求强制复核

14.4 HITL 工作台建议能力

  • • 原文与解析结果并排展示
  • • bbox 高亮定位
  • • OCR 文本逐块修正
  • • 表格结构修正
  • • 图表摘要修正
  • • 审核记录留痕
  • • 修订版本回写与重新入库

工具建议:

  • • Label Studio
  • • Prodigy
  • • 自研轻量审核平台

15. 可观测性与运维设计

15.1 关键监控指标

流量指标

  • • 每小时上传文档数
  • • 各类文档占比
  • • 平均页数
  • • 平均文件大小

处理指标

  • • 分类耗时
  • • OCR 耗时
  • • 图表理解耗时
  • • 切块耗时
  • • embedding 耗时
  • • 入库耗时

质量指标

  • • OCR 平均置信度
  • • 低质量页占比
  • • 复核率
  • • 重试率
  • • 死信率

检索指标

  • • 召回命中率
  • • rerank 提升率
  • • 用户点击率
  • • 用户差评率

15.2 日志设计建议

建议为每一处理阶段记录 processing log,至少包含:

  • • trace_id
  • • doc_id
  • • page
  • • stage
  • • status
  • • duration_ms
  • • engine_name
  • • engine_version
  • • confidence
  • • error_code
  • • error_message

15.3 告警策略建议

推荐针对以下场景设置告警:

  • • OCR 失败率显著上升
  • • 队列积压异常
  • • 死信队列增长
  • • 图表 JSON 校验失败率超阈值
  • • 向量入库失败率升高
  • • 某租户解析成功率突降

16. 安全、权限与合规设计

16.1 数据安全

  • • 原始文件加密存储
  • • 传输全程 HTTPS
  • • 敏感字段脱敏
  • • 审计日志留存
  • • 中间文件生命周期清理

16.2 权限隔离

  • • 租户级隔离
  • • 文档级 ACL
  • • 部门级与角色级权限
  • • 检索前置过滤,禁止生成后过滤

16.3 合规要求

  • • 支持数据删除与回溯
  • • 支持文档版本管理
  • • 支持访问审计
  • • 高敏文档可禁用外部模型
  • • 对外部模型调用配置脱敏与白名单策略

17. 成本控制方案

17.1 成本主要来源

  • • OCR 费用
  • • Vision LLM 调用费用
  • • Embedding 费用
  • • 存储费用
  • • CPU/GPU 算力成本
  • • 人工复核成本

17.2 成本优化策略

  1. 1. 优先识别纯文本,避免无意义 OCR。
  2. 2. 页面级分流,避免整本文档走最贵路线。
  3. 3. 仅对真正的图表区域调用 Vision LLM。
  4. 4. Embedding 采用增量更新,避免全量重建。
  5. 5. 重复文档命中缓存直接复用。
  6. 6. 高价值文档走高精度模式,普通文档走标准模式。
  7. 7. 热数据与冷数据分层存储。

18. 推荐技术栈

18.1 服务与平台

  • • 后端服务:Java Spring Boot / Go
  • • 消息队列:Kafka
  • • 对象存储:MinIO / S3 / OSS

18.2 文档处理

  • • PDF 解析:PyMuPDF、pdfplumber
  • • OCR:PaddleOCR + 商业 OCR 组合
  • • 版面分析:LayoutParser、PaddleOCR PP-Structure
  • • 表格识别:Camelot / Paddle 表格识别 / 商业 Document AI
  • • 图像理解:Vision LLM
  • • 图像 embedding:CLIP / SigLIP

18.3 存储与检索

  • • 元数据:PostgreSQL
  • • 全文检索:Elasticsearch / OpenSearch
  • • 向量数据库:Qdrant / Milvus / pgvector

18.4 可观测性

  • • Prometheus
  • • Grafana
  • • Loki

19. 实施难点与规避建议

难点 1:分类不准导致路线走错

建议从规则引擎起步,保守分流。低置信文档进入增强处理或人工复核,而不是直接进入错误路线。

难点 2:OCR 看似成功但文本不可用

建议必须引入版面分析与阅读顺序恢复,不能仅看 OCR 是否输出了文字。

难点 3:图表理解成本失控

建议仅对检测出的图表区域调用 Vision LLM,避免整页多模态理解。

难点 4:低质量内容污染知识库

建议设置严格入库门槛,不合格内容不应进入正式检索库。

难点 5:RAG 命中但回答不可信

建议所有结果返回来源页码和证据片段,高风险问题显式展示来源摘要。


20. 结论

企业级 PDF 处理不应简单理解为“文档转文本”,而应建设为一套面向知识治理的多路线智能解析平台。

从生产落地角度,推荐采用以下统一方案:

  • • 纯文本 PDF:直接文本抽取 + 结构化切块 + RAG 入库;
  • • 扫描件 PDF:图像增强 + OCR + 版面恢复 + 质量门控 + 入库;
  • • 图文混排 PDF:区域分割 + 文本/表格/图表/图片分别处理 + 多模态融合入库。

最终通过统一知识对象模型、混合检索、人工复核闭环、可观测性与权限治理能力,构建一套真正可长期运行、可扩展、可审计、可优化的企业级 PDF 智能处理体系。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-12 01:52:56 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/737654.html
  2. 运行时间 : 0.141565s [ 吞吐率:7.06req/s ] 内存消耗:4,863.45kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ced4180b725d51b5d652fbae47fc15c1
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001291s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002046s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000896s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000694s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001581s ]
  6. SELECT * FROM `set` [ RunTime:0.000551s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001575s ]
  8. SELECT * FROM `article` WHERE `id` = 737654 LIMIT 1 [ RunTime:0.001341s ]
  9. UPDATE `article` SET `lasttime` = 1781200376 WHERE `id` = 737654 [ RunTime:0.001915s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000597s ]
  11. SELECT * FROM `article` WHERE `id` < 737654 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001150s ]
  12. SELECT * FROM `article` WHERE `id` > 737654 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001158s ]
  13. SELECT * FROM `article` WHERE `id` < 737654 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001409s ]
  14. SELECT * FROM `article` WHERE `id` < 737654 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002145s ]
  15. SELECT * FROM `article` WHERE `id` < 737654 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002304s ]
0.145620s