乐于分享
好东西不私藏

pdf-inspector如何分类提取PDF

pdf-inspector如何分类提取PDF

 ENGINEERING NOTES 

 技术专栏目录 

 01  firecrawl/pdf-inspector 如何把 PDF 先分类再提取:Rust 本地库的最小使用流程 

 NO.01 

 firecrawl/pdf-inspector 如何把 PDF 先分类再提取:Rust 本地库的最小使用流程 

 2026/08/04 00:00:00 

TECH NOTE

先给结论:它解决的是 PDF 进入下游流程前的分流问题

pdf-inspector 是 firecrawl 开源的 Rust PDF 检查、分类和文本提取库,主要入口包括 Python 的 pdf_inspector.process_pdf、Node.js 的 processPdf/classifyPdf,以及浏览器侧的 @firecrawl/pdf-inspector-wasm。

这个项目最值得看的不是“又一个 PDF 转文本工具”,而是先判断文件属于 text_based、scanned、image_based 还是 mixed,再决定继续本地解析、转入 OCR,还是进入人工复核队列。

README 给出的 Python 构建路径是 pip install maturin 与 maturin develop --release;Node.js 侧使用 npm install @firecrawl/pdf-inspector;WASM 侧使用 npm install @firecrawl/pdf-inspector-wasm。

官方基准使用 opendataloader-bench 的 200 份 PDF,在禁用 OCR、只比较本地非模型解析器的条件下,pdf-inspector overall 为 0.875,reading order 为 0.915,tables 为 0.814,200 份文档速度为 0.470s。

短期更适合做原生文本 PDF 的快速入口分流和 Markdown 提取;如果主要输入是扫描件、照片 PDF 或需要 OCR 识别,它不能替代 OCR 引擎。

TECH NOTE

这个项目为什么会火:PDF 解析的第一步经常被做错

 文档处理链路里最常见的失败,不是“没有 PDF 解析库”,而是把所有 PDF 都当成同一种文件处理。一个可复制文本的研究论文、一个由扫描图片组成的合同、一个前几页是文本后几页是图片的混合文件,在文件扩展名上都叫 PDF,但对程序来说完全不同。把扫描件直接交给文本提取器,结果往往是空字符串、错乱对象、缺页,或者只有图片引用;把原生文本 PDF 全部送去 OCR,又会引入额外延迟、计算成本和隐私边界。 
 pdf-inspector 的定位正好在这个入口处。它不是把自己包装成完整文档理解平台,而是做三件更窄但更实用的事:检查 PDF、判断类型、提取文本并输出 Markdown。README 对它的描述是 Fast Rust library for PDF inspection, classification, and text extraction,并强调能 intelligently detects scanned vs text-based PDFs to enable smart routing decisions。这里真正有价值的词是 routing decisions,也就是在下游任务开始前先做路径选择。 
 这类分流在 RAG、知识库导入、财报解析、发票处理、合同归档里很重要。一个小团队如果没有这个入口,通常会遇到两种极端:要么为了省事全部 OCR,吞下速度和成本;要么全部走文本解析,等到用户问答结果错了才发现原始文件根本没有可提取文本。pdf-inspector 的价值不是让所有 PDF 都“看懂”,而是让系统尽早知道哪类 PDF 可以低成本处理,哪类 PDF 不该继续走当前管线。 
 从项目热度看,它也确实踩中了开发者痛点。素材显示 firecrawl/pdf-inspector 在 GitHub Trending 当日第 3 名,总 Stars 8,203,Forks 542,当日新增 1,699 stars。热度不能替代验证,但说明“本地、快速、无需模型的 PDF 分类和提取”有明确需求。真正要不要采用,还是要看你自己的样本文档上能不能稳定得到 pdf_type、markdown、阅读顺序和表格结构。

TECH NOTE

前置条件:先把它当作本地库,而不是云端文档服务

 评估 pdf-inspector 前,要先把预期摆正。它是一个纯 Rust 本地库,README 里写到它不使用 ML models,不依赖 external services,PDF 解析依赖 lopdf。这个设计带来的直接好处是边界清楚:文件不需要上传到外部服务,也不需要 API key;坏处也同样明确:它不会替你做 OCR,不会管理任务队列,不会维护文档状态,也不会把解析失败样本自动送进人工后台。 
 Python 用户需要关注 maturin。pyproject.toml 里的 build-system requires 是 maturin>=1.0,<2.0,build-backend 是 maturin;tool.maturin 下的 features 包含 python。也就是说,Python 入口不是一个纯 Python 脚本,而是通过 PyO3 暴露 Rust 能力。你需要准备 Python 3.8 以上环境,以及能构建 Rust 扩展的本地开发环境。第一次试用时,建议在干净虚拟环境里安装,避免把构建错误和现有项目依赖混在一起。 
 Node.js 路线适合后端服务、批处理脚本或队列消费者。README 示例使用 readFileSync 读取 document.pdf,再调用 processPdf 或 classifyPdf。WASM 路线则适合浏览器或边缘环境,示例里需要 import init, { processPdf } from @firecrawl/pdf-inspector-wasm,先 await init(),再把 fetch 得到的 arrayBuffer 转成 Uint8Array 交给 processPdf。这个路径的优势是文件可以留在当前运行环境内,限制是浏览器内存、大文件体验和初始化成本需要单独测。 
 最小样本不要只准备一份“看起来正常”的 PDF。建议准备三类:一份可复制文本的报告或论文,一份扫描件或图片 PDF,一份混合型 PDF。pdf-inspector 的核心价值在分类边界,如果只用原生文本 PDF 测试,最多证明它能跑通,不能证明它能帮你的流程做分流。

TECH NOTE

最小使用路径:从源码构建到一次分类和 Markdown 输出

 下面这条路径按 Python 本地验证来设计,适合想先看清 pdf_type 和 markdown 输出的读者。真正可复制的命令放在紧邻步骤的代码块里;步骤文字说明输入、对象和检查点。document.pdf 需要你自己准备,并放在当前项目目录下。README 里的示例文件名就是 document.pdf,但仓库不一定自带这个样本。

获取 firecrawl/pdf-inspector 仓库并进入项目目录,检查 README.md、pyproject.toml 和 src 目录是否存在;这一步的对象是源码,输入是本地 Git 工作区,检查点是后续 maturin 能在当前目录找到 Python 构建配置。

安装 maturin 并执行 maturin develop --release,目标是把 Rust 核心构建成本地 Python 扩展;检查点是 Python 解释器能够 import pdf_inspector,而不是只看到安装命令成功结束。

把待测样本命名为 document.pdf 放在仓库根目录,至少先用一份原生文本 PDF 试跑;检查点是 process_pdf 能返回 result.pdf_type,并且输出值落在 text_based、scanned、image_based、mixed 这类分类结果里。

用 Python 调用 pdf_inspector.process_pdf("document.pdf"),打印 pdf_type 与 markdown;检查点是原生文本 PDF 应该能得到 Markdown 字符串,扫描件或图片型 PDF 则可能返回空内容或不适合继续本地文本提取。

如果你的服务栈在 Node.js,安装 @firecrawl/pdf-inspector,并把同一份 document.pdf 交给 processPdf(readFileSync('document.pdf'));检查点是 pdfType 与 markdown 能在服务端脚本中被读取,便于后续接队列、数据库或 RAG 管线。

如果要在浏览器或 WASM 环境处理文件,再安装 @firecrawl/pdf-inspector-wasm;检查点是调用前必须 await init(),输入必须是 Uint8Array,而不是直接把文件路径交给 WASM 入口。

记录每份样本的 pdf_type、markdown 是否为空、Markdown 长度和处理耗时;检查点不是“跑通一次”,而是能否把 scanned、image_based 和 mixed 样本从 text_based 样本里稳定分出来。

BASH

git clone https://github.com/firecrawl/pdf-inspector.git cd pdf-inspector pip install maturin maturin develop --release python - <<'PY' import pdf_inspector result = pdf_inspector.process_pdf("document.pdf") print(result.pdf_type) print(result.markdown) PY npm install @firecrawl/pdf-inspector npm install @firecrawl/pdf-inspector-wasm
 这段命令闭环覆盖了三个动作:获取源码、构建 Python 绑定、调用 process_pdf 并打印验收结果。后两行 npm install 不会自动运行 Node.js 示例,它们用于确认 README 给出的 Node 和 WASM 包入口可安装。真正接入 Node.js 时,需要在自己的脚本里按照 README 示例引入 readFileSync、processPdf 和 classifyPdf;浏览器侧则按 README 先 init,再处理 Uint8Array。 
 如果 Python 调用阶段失败,先区分是构建失败还是样本失败。构建失败通常发生在 maturin develop --release 阶段,应该检查 Python 版本和 Rust 扩展构建环境;样本失败则发生在 process_pdf 之后,应该换成另一份已知可复制文本的 PDF 重试。不要在第一份扫描件上得不到 markdown 就判断项目不可用,因为它本来就把 scanned 和 image_based 当成需要分流的对象。

TECH NOTE

命令与配置:能确认的配置很少,但边界反而清楚

 pdf-inspector 的配置证据主要来自 pyproject.toml,而不是 .env。素材里没有给出 API endpoint、Token、数据库地址或云服务密钥,这与项目定位一致:它是本地库,不是托管 API。写入配置时不要凭空添加 PDF_INSPECTOR_API_KEY、OCR_ENDPOINT 之类的环境变量;如果你的系统需要 OCR 或对象存储,那是你自己的下游集成,不属于 pdf-inspector README 已经证明的能力。

ENV

[build-system] requires = ["maturin>=1.0,=3.8"  [tool.maturin] features = ["python"]
 这个配置块值得读两点。第一,requires-python >=3.8 给了 Python 接入的最低版本边界;如果你的线上环境仍在更低版本,应该先升级运行时,而不是把 pdf-inspector 硬塞进去。第二,features = ["python"] 说明 Python 绑定是 maturin 构建过程的一部分,CI、容器镜像或本地开发机都要能完成这个构建流程。对只用 Node.js 包的项目来说,可以不经过 Python 绑定,但仍要在部署环境里验证 npm 包是否能安装并运行。 
 目录结构也给出了能力边界。README 摘录列出 src/lib.rs 是 Public API、PdfOptions builder 和 convenience functions;python.rs 是 PyO3 Python bindings;types.rs 放 TextItem、TextLine、PdfRect、ItemType 等共享类型;text_utils.rs 处理 CJK、RTL、ligatures、bold/italic 等字符和文本辅助;process_mode.rs 定义 DetectOnly、Analyze、Full;detector.rs 做不完整加载文档的快速 PDF 类型检测;glyph_names.rs 负责 Adobe Glyph List 到 Unicode 的映射;tounicode.rs 解析 CID 编码文本的 ToUnicode CMap。 
 这些文件名说明它并不是简单地把页面文本拼接出来。ToUnicode、glyph names、CJK、RTL、连字、粗斜体识别,都是 PDF 文本抽取里容易踩坑的位置;process mode 和 detector 则说明项目关注“先检测、再分析、再完整处理”的成本分层。对开发者来说,合理用法不是一上来把它当万能解析器,而是在入口处先调用轻量分类,再决定是否进入 Full 级别处理或交给其他工具。

TECH NOTE

工作流拆解:把 pdf_type 当作路由信号,而不是展示字段

图 1|pdf-inspector 的组件关系与运行架构
 在真实流程里,pdf_type 不应该只打印在日志里。它更适合作为下一步动作的条件。text_based 可以进入 Markdown 清洗、分块、索引或数据库写入;scanned 和 image_based 应该进入 OCR 或人工复核;mixed 则需要更谨慎,可能部分页面能提取文本,部分页面仍需要 OCR。这样做的好处是把失败提前,而不是等到问答系统返回空答案、摘要系统漏页、字段抽取结果异常时再回头排查。 
 最小数据流可以很朴素:输入是 document.pdf 或一批 PDF 文件;第一步调用 process_pdf 或 processPdf;第二步读取 pdf_type;第三步只对 markdown 非空且类型合适的文件进入下游;第四步把 scanned、image_based、mixed 的文件名、分类结果和失败原因记录下来。这个流程里 pdf-inspector 不负责数据库、不负责消息队列、不负责 OCR,但它给了一个稳定的分岔点。 
 如果你已经在做文档 RAG,这个分岔点尤其有用。很多 RAG 失败样本不是 embedding 模型的问题,而是源文本一开始就抽错了。pdf-inspector 官方基准里 reading order 为 0.915,tables 为 0.814,说明它在原生文本 PDF 的阅读顺序和表格结构上有一定优势;但这个成绩来自 opendataloader-bench 的 200 份 PDF、本地非模型解析、禁用 OCR 条件。它不能外推成“任何 PDF 都能高质量解析”,也不能替代你自己的样本验收。 
 对 Node.js 项目,最实际的接法是把 @firecrawl/pdf-inspector 放在上传后的第一道处理任务中。读取文件 buffer,调用 processPdf,拿到 pdfType 和 markdown;如果 pdfType 是 TextBased 且 markdown 有内容,再继续分块;如果是 Scanned 或 ImageBased,直接标记为需要 OCR。对浏览器侧工具,WASM 包可以让用户本地预检查 PDF 类型,减少不必要的上传,但要先测试大文件在浏览器内存里的表现。

TECH NOTE

验收清单:不要只看能否打印 Markdown

图 2|pdf-inspector 的通过信号、权限边界与停止条件
 pdf-inspector 的验收要分成“能运行”和“值得接入”两层。能运行只需要 import 成功、process_pdf 返回结果、pdf_type 能打印;值得接入则要看分类稳定性、结构输出和失败样本比例。尤其是在团队准备把它放进批处理前,不能只用 README 示例跑一份 document.pdf 就结束。

验收指标要至少记录四项:每份 PDF 的 pdf_type、markdown 是否为空、Markdown 字符长度或行数、处理耗时;如果目标是表格或报告,还要人工抽查阅读顺序和表格结构是否足够进入下游。

权限和隐私边界比较清楚:pdf-inspector 是本地 Rust 库,README 没有要求 API key 或外部服务;但你自己的接入层如果把 PDF 上传到对象存储、OCR 服务或日志系统,隐私边界就已经不再由 pdf-inspector 单独决定。

不适合扩大使用的失败条件很明确:扫描件占比高、mixed 文件经常漏页、Markdown 表格结构不能满足抽取需求、maturin 构建在目标部署环境不稳定,或者浏览器 WASM 处理大文件时内存不可控,都应该暂缓全量替换。

分类结果要和人工抽样对照。至少挑出 text_based、scanned、image_based、mixed 各若干份样本复核;如果分类经常与人工判断不一致,后面的 OCR 路由和 RAG 入库都会被污染。

性能验收不能直接照搬官方 0.470s。官方数字是在 Apple M4 Pro、200 份 opendataloader-bench 文档、五次轮换完整运行并排除预热的条件下得到的;你的服务器、文件大小、并发方式和 I/O 路径都会改变结果。

 失败回退也要提前写好。对 text_based 但 markdown 为空的文件,不要直接丢弃,应该保留原文件路径和分类结果,进入复核队列;对 scanned 和 image_based 文件,不要反复重试本地文本提取,应该改走 OCR;对 mixed 文件,不要假设 Markdown 已覆盖所有页面,最好把它标记成需要额外检查的中间状态。这个策略比“解析失败就重跑三次”更省时间。

TECH NOTE

取舍判断:今天该不该把它放进你的 PDF 流程

 pdf-inspector 短期最值得试的点,是把 PDF 类型判断前置化。它适合那些已经有一批 PDF、需要本地处理、不想把所有文件都送去 OCR、又需要比较干净 Markdown 的开发者。尤其是报告、研究论文、财务文件、发票、法律 PDF 这类原生文本占比较高的材料,可以先拿 20 到 50 份真实样本跑一轮,看分类和 Markdown 质量是否足够进入下游。 
 不适合的人群也很明确。如果你的主要材料来自扫描仪、手机拍照、图片归档,或者业务目标是识别印章、手写字、复杂版面视觉关系,pdf-inspector 只能做入口判断,不能替你完成 OCR 和视觉理解。如果你的团队没有 Rust 扩展构建经验,也要先验证 maturin develop --release 在本地、CI 和部署镜像里是否稳定,不要等接入主流程后才发现构建链路卡住。 
 和 PyMuPDF4LLM、MarkItDown、LiteParse、OpenDataLoader 这类工具相比,pdf-inspector 在 README 给出的基准里强调的是本地、非模型、禁用 OCR 条件下的速度、阅读顺序和表格表现。这个比较有参考价值,但不是最终选型结论。选型时最应该问的不是“榜单上谁最高”,而是“我的 PDF 样本里扫描件占多少、表格是否关键、解析失败如何回退、隐私是否允许外部服务”。

DECISION

今天可以试的人:正在做文档导入、RAG、报告解析、合同或发票文本抽取,并且手里有较多原生文本 PDF 的开发者,可以先 clone firecrawl/pdf-inspector,按 README 的 maturin 和 process_pdf 路线跑 20 份真实样本。应该先观望的人:主要处理扫描件、照片 PDF、手写内容或强依赖 OCR 的团队,不要把它当完整文档理解方案。试用时看三个指标:pdf_type 与人工判断的一致率、markdown 对阅读顺序和表格结构的保留程度、在你自己的机器和部署环境里的单文件耗时与构建稳定性。

 下一步动作很具体:先用 Python 路线跑通 document.pdf,再换成你自己的三类样本;如果结果稳定,再把 pdf_type 接到下游路由,而不是只把 markdown 存起来。能做到这一点,pdf-inspector 就不只是一个 Trending 项目,而是 PDF 流程里一个低成本的前置闸门。 
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-09 18:05:59 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/900950.html
  2. 运行时间 : 0.085414s [ 吞吐率:11.71req/s ] 内存消耗:4,688.11kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0c5371695c74e5d78652d631c6c581ac
  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 ( 4.22 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.11 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.000644s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000756s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000289s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000266s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000522s ]
  6. SELECT * FROM `set` [ RunTime:0.000210s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000614s ]
  8. SELECT * FROM `article` WHERE `id` = 900950 LIMIT 1 [ RunTime:0.000874s ]
  9. UPDATE `article` SET `lasttime` = 1786269959 WHERE `id` = 900950 [ RunTime:0.000710s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000230s ]
  11. SELECT * FROM `article` WHERE `id` < 900950 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000446s ]
  12. SELECT * FROM `article` WHERE `id` > 900950 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000379s ]
  13. SELECT * FROM `article` WHERE `id` < 900950 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000780s ]
  14. SELECT * FROM `article` WHERE `id` < 900950 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000747s ]
  15. SELECT * FROM `article` WHERE `id` < 900950 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001398s ]
0.087083s