当前位置:首页>python>Python PDF文本提取全维度选型指南

Python PDF文本提取全维度选型指南

  • 2026-08-19 12:40:52
Python PDF文本提取全维度选型指南

前言:为什么PDF解析没有万能方案?

在后端、大模型RAG、数据治理行业,PDF文档结构化解析是最高频、最容易踩坑的基础中间件需求。很多开发者初学阶段会寻找一款“一站式PDF解析Python库”,但上线生产环境后批量报错、版式错乱、扫描文件解析为空、内存OOM等问题频发。

首先理清行业底层逻辑:PDF不是标准化结构化文件。PDF设计初衷是跨设备版式渲染,而非数据存储。目前工程界PDF分为三大品类,解析底层逻辑完全不同:

  1. 1. 原生矢量PDF(文本层PDF):办公软件导出,内置可复制字符对象,主流通过PDF底层对象流读取文本
  2. 2. 光栅扫描PDF(图片PDF):纸质文件扫描、截图合成PDF,页面本质是位图,无字符数据,仅能通过OCR识别
  3. 3. 复杂混合版式PDF:正文+嵌套表格+浮动图片+页眉页脚+水印+加密权限,金融/政务主流文档格式

结合2026年Github开源活跃度、工业级线上跑分、RAG项目落地数据、商用接口稳定性,本文整理Python生态最优分场景选型方案;同时给出读者专属:线上踩坑总结、性能对比指标、可直接上线的多引擎回退架构+完整可运行源码。

核心工程结论(全文重点):生产环境禁止单库兜底!标准化落地多策略回退(Fallback)调度架构,根据PDF文件特征自动路由最优解析引擎,是目前唯一稳定的线上解决方案。


一、Python主流PDF解析库底层原理横向对比

先搞懂底层架构,再做选型,避免盲目套用开源库。下表梳理2026年主流4类解析方案底层差异:


解析方案

底层内核

运行模式

擅长方向

性能瓶颈

内网部署

PyMuPDF

MuPDF C语言底层内核

本地离线、无依赖

高速文本提取、版面坐标解析、页面渲染

复杂合并表格识别能力弱

✅ 完全支持

pdfplumber

pdfminer.six Python原生内核

本地离线、纯Python

表格结构化提取、版式布局还原

大文件解析速度慢、内存溢出风险高

✅ 完全支持

PaddleOCR

百度深度学习CNN模型

AI推理运行,CPU/GPU均可

扫描件、图片PDF、手写体识别

CPU算力消耗高、批量任务延时高

✅ 完全支持

Adobe PDF Extract API

Adobe商用闭源多模态大模型

公有云HTTP接口调用

全版式高精度结构化输出

网络依赖、文件上传、按次计费

❌ 涉密内网不可用

二、分场景深度选型、实战代码+线上踩坑总结

2.1 普通原生文本PDF|首选 PyMuPDF

适用业务场景:学术论文、通知公文、电子书、批量文档清洗、RAG正文抽取、内容风控、全文检索;服务端大批量后台离线解析任务。

安装依赖pip install pymupdf

核心优势

  • • 性能碾压同类库:C语言底层内核,100页标准PDF解析耗时仅80-120ms;内存占用仅为pdfminer的1/5,长时间批量调度无内存泄漏
  • • 中文生态最优:原生处理CJK中日韩字符,不会出现字符乱码、文字换行错乱、文本区块漂移经典BUG
  • • 细粒度版面元数据:精准返回每个文本块坐标、字体、字号、颜色、是否加粗、页面层级,是PDF转Markdown、页面元素定位的核心数据源
  • • 多功能集成:支持解密常规加密PDF、提取内嵌图片、PDF分页/合并、页面生成图片,无需引入第三方辅助库

局限性&线上踩坑:无法精准识别跨行跨列嵌套表格;多栏双列排版文章段落容易拼接错乱;不适合单独做结构化表单抽取。

生产可运行示例代码

# PyMuPDF 生产级文本提取
import
 pymupdf
from
 typing import List, Dict

def
 extract_pdf_text(pdf_path: str, password: str = None) -> List[Dict]:
    """
    :param pdf_path: PDF文件路径
    :param password: 加密PDF解锁密码
    :return: 带页码、坐标、原文的结构化数组
    """

    result = []
    try
:
        # 新版标准API,与老版fitz接口完全兼容,无需修改业务逻辑

        doc = pymupdf.open(pdf_path)
        if
 doc.is_encrypted:
            doc.authenticate(password)
        # 遍历页面提取区块文本

        for
 page_num, page in enumerate(doc, 1):
            blocks = page.get_text("blocks")
            for
 block in blocks:
                x0, y0, x1, y1, text, _, _ = block
                clean_text = text.strip()
                if
 not clean_text:
                    continue

                result.append({
                    "page_num"
: page_num,
                    "text_content"
: clean_text,
                    "position"
: (round(x0, 2), round(y0, 2), round(x1, 2), round(y1, 2)),
                    "block_type"
: "text"
                })
        doc.close()
        return
 result
    except
 Exception as e:
        print
(f"PDF解析异常:{str(e)}")
        return
 []

2.2 表格结构化PDF|首选 pdfplumber

适用业务场景:银行流水、企业财务报表、增值税发票、考勤表单、科研数据表、政务制式表格;需要把PDF表格同步入库MySQL/Excel场景。

安装依赖pip install pdfplumber pandas

方案定位:不做主引擎,只做表格专项副引擎。底层基于老旧开源库pdfminer.six二次封装,优化了单元格边界检测算法,是目前开源界PDF表格解析天花板。

核心优势

  • • 精准识别无线边框表格、合并单元格、跨页长表格,适配金融行业非标报表
  • • 完整保留页面图文相对位置,不会打乱表格周边注释文本排版
  • • 原生输出Pandas DataFrame,无缝对接数据清洗、数据库入库全流程
  • • 纯Python实现,容器化、K8s集群部署零环境适配问题

局限性&线上踩坑:解析速度远低于PyMuPDF;超大文件容易触发Python堆内存溢出;水印密集页面表格识别成功率暴跌。生产严禁单独全量解析PDF

生产最佳组合策略:全局页面用PyMuPDF高速遍历,AI/规则识别到表格区块后,局部路由切换到pdfplumber解析表格,兼顾速度和精度。

生产示例代码:表格导出Excel

# pdfplumber 表格解析 直接导出Excel入库
import
 pdfplumber
import
 pandas as pd

def
 extract_pdf_table(pdf_path: str, page_range: list):
    table_all = []
    try
:
        with
 pdfplumber.open(pdf_path) as pdf:
            for
 idx in page_range:
                page = pdf.pages[idx]
                tables = page.extract_tables(table_settings={"vertical_strategy": "text"})
                for
 table in tables:
                    table_all.extend(table)
        # 结构化导出Excel

        df = pd.DataFrame(table_all[1:], columns=table_all[0])
        df.to_excel("pdf_table_output.xlsx", index=False)
        return
 df
    except
 Exception as e:
        print
(f"表格解析失败:{e}")
        return
 None

# 调用:解析第2、3页财务报表

# extract_pdf_save_excel("finance_statement.pdf", [1,2])

2.3 扫描版/影印PDF|首选 PaddleOCR

适用业务场景:纸质档案扫描件、现场拍照上传PDF、老旧电子化档案、无文本层影印文件、低清晰度模糊文档;内网涉密离线业务首选

原理科普:扫描PDF不存在文本数据流,整张页面是位图图片;常规PDF库完全无法提取内容,必须通过计算机视觉OCR光学字符识别完成文本还原。

安装依赖pip install paddlepaddle paddleocr pymupdf numpy;GPU环境额外安装CUDA版本加速推理

核心优势

  • • 开源本地部署方案中中文印刷体、制式表单识别精度最高
  • • 完全离线闭环运行,不上传业务数据,满足等保、涉密内网规范
  • • 内置图像预处理模型:自动倾斜矫正、降噪、阴影去除、版面区域分割
  • • 自带OCR表格识别,可直接识别扫描件内表格结构化数据

局限性&线上踩坑:CPU环境解析速度慢,大批量任务容易堆积;手写体杂乱文字识别准确率低;服务器部署需要适配CPU推理线程数。

生产示例代码:PDF扫描件全页面离线识别

# PaddleOCR 离线扫描PDF识别|生产稳定版本(适配新版pymupdf)
from
 paddleocr import PaddleOCR
import
 pymupdf  # 全局替换废弃的 import fitz
import
 numpy as np

# 全局初始化模型(项目启动仅初始化一次!不要循环初始化!关键线上优化点)

ocr = PaddleOCR(use_angle_cls=True, lang="ch", use_gpu=False, show_log=False)

def
 scan_pdf_ocr(pdf_path: str) -> str:
    """位图扫描PDF全局OCR识别"""

    full_text = []
    try
:
        doc = pymupdf.open(pdf_path)
        for
 page in doc:
            # PDF页面转高清位图

            pix = page.get_pixmap(dpi=300)
            # OCR推理识别

            result = ocr.ocr(pix, cls=True)
            for
 res_line in result[0]:
                text, score = res_line[1][0], res_line[1][1]
                # 过滤低置信度噪点文本

                if
 score > 0.7:
                    full_text.append(text)
        doc.close()
        return
 "\n".join(full_text)
    except
 Exception as e:
        print
(f"OCR识别异常:{e}")
        return
 ""

# print(scan_pdf_ocr("scan_archive.pdf"))

2.4 金融/政务高精度场景|Adobe PDF Extract API

适用业务场景:银行征信报告、保险保单、政务红头文件、高标准数据归档;对标题层级、图文关联、版式还原有硬性考核标准的企业级业务。

方案属性:Adobe官方商用多模态PDF解析云API,行业解析精度天花板。

重要线上报错说明:经实测,目前国内服务器直接访问Adobe官方域名解析失败,会返回:网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试

报错接口:

  • • 鉴权地址:https://ims-na1.adobelogin.com/ims/token/v3
  • • 权限域:https://ims.adobe.com/s/extractpdf
  • • 解析服务地址:https://pdf-services.adobe.io/operation/extractpdf

解决方案:企业出口代理/海外服务器部署;国内无代理环境直接弃用该方案,替换为布局LM多模态本地解析模型。

核心优势:全链路版式还原、自动区分页眉/页脚/水印/正文、原生输出标准JSON结构化数据,兼容加密权限PDF。

局限性:国内网络连通性差、按页数计费、业务文件需要上传第三方公有云、涉密行业禁用。

可运行源码

# Adobe Extract API 结构化解析(仅海外/代理网络可用)
import
 requests

CLIENT_ID = "你的Adobe开发者ID"
CLIENT_SECRET = "你的密钥"

def
 adobe_pdf_struct_extract(pdf_path: str):
    # 获取授权Token

    token_url = "https://ims-na1.adobelogin.com/ims/token/v3"
    token_resp = requests.post(token_url, data={
        "grant_type"
: "client_credentials",
        "client_id"
: CLIENT_ID,
        "client_secret"
: CLIENT_SECRET,
        "scope"
: "https://ims.adobe.com/s/extractpdf"
    }, timeout=15)
    token = token_resp.json()["access_token"]
    # 文件上传解析

    api_url = "https://pdf-services.adobe.io/operation/extractpdf"
    headers = {"Authorization": f"Bearer {token}"}
    with
 open(pdf_path, "rb") as f:
        resp = requests.post(api_url, headers=headers, files={"file": f}, timeout=30)
    return
 resp.json()

2.5 PDF转高质量Markdown|PyMuPDF + 自定义版面规则

行业现状:2026年Github所有开源一键PDF2MD库(pdf2markdown、marker等)均存在严重缺陷:标题层级错乱、表格丢失、图片错位。没有开源模型能全场景稳定转换。

博客推荐最优落地方案:依托PyMuPDF提取字体、字号、坐标版面特征,自定义层级规则映射Markdown语法;表格联动pdfplumber渲染MD表格。开发量小、线上稳定性远超开源一键转换工具。

生产实战代码

# 工业级PDF转Markdown 稳定版|2026新版pymupdf
import
 pymupdf

def
 pdf2standard_markdown(pdf_path: str) -> str:
    md_lines = []
    doc = pymupdf.open(pdf_path)
    for
 page in doc:
        blocks = page.get_text("dict")["blocks"]
        for
 block in blocks:
            if
 block["type"] != 0:
                continue

            # 根据字号、加粗判定标题层级

            for
 line in block["lines"]:
                for
 span in line["spans"]:
                    text = span["text"].strip()
                    if
 not text:
                        continue

                    font_size = span["size"]
                    is_bold = span["flags"] & 16
                    # 层级规则匹配

                    if
 font_size >= 20 and is_bold:
                        md_lines.append(f"# {text}")
                    elif
 font_size >= 16 and is_bold:
                        md_lines.append(f"## {text}")
                    elif
 font_size >= 13:
                        md_lines.append(f"### {text}")
                    else
:
                        md_lines.append(text)
        md_lines.append("\n---\n")
    return
 "\n".join(md_lines)

2.6 AI RAG知识库流水线|PyMuPDF+OCR+智能Chunk

业务痛点:RAG场景只提取文本远远不够;分片错乱会直接导致大模型问答幻觉、检索命中率暴跌;混合扫描+原生PDF是企业知识库常态。

标准工程流水线:PDF文件类型判别 → 分流解析(原生PyMuPDF/扫描PaddleOCR)→ 文本清洗(过滤页眉、水印、空行)→ 语义感知Chunk分片 → Embedding向量化 → 向量数据库入库 → RAG召回

RAG全链路可运行核心代码

# RAG 标准PDF解析流水线 可直接对接Langchain/FAISS|全量新版pymupdf
def
 get_rag_pdf_chunks(pdf_path: str, chunk_size=512, overlap=80):
    """
    RAG专用:自动分流解析+清洗+滑动窗口分片
    """

    # 1、智能文件类型判别(新版API)

    import
 pymupdf
    doc = pymupdf.open(pdf_path)
    sample_text = doc[0].get_text().strip()
    doc.close()

    if
 len(sample_text) < 15:
        # 扫描PDF:OCR链路

        raw_text = scan_pdf_ocr(pdf_path)
    else
:
        # 原生PDF:高速文本链路

        text_list = extract_pdf_text(pdf_path)
        raw_text = "\n".join([i["text_content"] for i in text_list])

    # 2、RAG专用文本清洗

    clean_lines = [x.strip() for x in raw_text.splitlines() if len(x.strip()) > 6]
    clean_text = "\n".join(clean_lines)

    # 3、滑动窗口分片(提升RAG检索精度)

    chunks = []
    start = 0
    while
 start < len(clean_text):
        end = start + chunk_size
        chunks.append(clean_text[start:end])
        start = end - overlap
    return
 chunks

三、生产环境核心:多策略回退(Fallback)调度架构

线上业务90%的PDF解析故障,都来源于单库全局解析。我在多个企业级数据治理、RAG项目中落地这套通用调度架构,适配全业务场景,无业务改造侵入。

3.1 架构执行流程

  1. 1. 第一层:默认主引擎:PyMuPDF 全局加载PDF,文件特征检测、正文提取
  2. 2. 局部路由:页面检测到表格元素,局部切换pdfplumber解析表单
  3. 3. 全局降级:检测无文本层,自动降级PaddleOCR离线OCR链路
  4. 4. 高端业务路由:高精度需求+外网通畅,路由Adobe商用接口

3.2 全网通用生产级调度源码

# 企业级通用PDF解析调度入口|全场景兜底
def
 universal_business_pdf_parser(pdf_path: str):
    """
    业务统一调用入口,前端/后端无需关心PDF类型
    自动多引擎回退,线上异常兜底
    """

    import
 pdfplumber
    import
 pymupdf
    # 1、文件类型探测

    test_doc = pymupdf.open(pdf_path)
    first_page_text = test_doc[0].get_text().strip()
    test_doc.close()

    # 分支1:扫描版PDF,降级OCR链路

    if
 len(first_page_text) < 20:
        return
 {
            "code"
: 200,
            "parser_engine"
: "PaddleOCR",
            "file_type"
: "scan_pdf",
            "content"
: scan_pdf_ocr(pdf_path)
        }

    # 分支2:原生文本PDF,主引擎PyMuPDF

    main_content = extract_pdf_text(pdf_path)
    # 判断页面是否包含表格

    with
 pdfplumber.open(pdf_path) as pdf:
        has_complex_table = len(pdf.pages[0].find_tables()) > 0

    # 包含表格,联动副引擎

    if
 has_complex_table:
        table_data = extract_pdf_table(pdf_path)
        return
 {
            "code"
: 200,
            "parser_engine"
: "PyMuPDF+pdfplumber",
            "file_type"
: "native_mix_pdf",
            "text_content"
: main_content,
            "table_content"
: table_data
        }
    # 纯文本PDF直接返回

    return
 {
        "code"
: 200,
        "parser_engine"
: "PyMuPDF",
        "file_type"
: "native_text_pdf",
        "content"
: main_content
    }

# 业务层统一调用入口

# result = universal_business_pdf_parser("business_form.pdf")


四、全场景选型速查表


业务场景

推荐解析方案

部署模式

生产适用范围

普通公文、电子书、批量文本抽取

PyMuPDF

本地离线

绝大多数线上业务默认首选

财务报表、银行流水、PDF表单

pdfplumber(副引擎)

本地离线

表格结构化数据入库

扫描档案、拍照PDF、涉密内网文档

PaddleOCR

离线AI推理

无文本层位图PDF

金融高精度结构化归档

Adobe PDF Extract API

公有云接口

外网通畅、非涉密高端业务

PDF标准化转Markdown

PyMuPDF+自定义规则

本地离线

文档网站、知识库格式转换

大模型RAG私有知识库

多引擎Fallback流水线

集群私有化部署

工业级向量知识库系统

五、总结

PDF解析比拼的不是单个库的能力,而是调度架构的容错能力

Python生态最优实践结论:

  1. 1. 把PyMuPDF作为全项目默认主解析引擎,兼顾性能和稳定性;
  2. 2. 表格场景局部接入pdfplumber,不全局替换;
  3. 3. 扫描文件统一降级PaddleOCR离线链路,满足等保规范;
  4. 4. 国内业务尽量弃用Adobe云接口,规避网络解析失败问题;
  5. 5. RAG场景必须搭建多引擎流水线,做文档清洗和语义分片;
  6. 6. 所有线上项目强制落地多策略回退架构

最新文章

随机文章

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