Pix2Text

开源 Python OCR 工具,基于 PaddleOCR + ONNX Runtime,支持中英文文字识别、数学公式识别、表格识别和版面分析,直接输出 Markdown。

简介

Pix2Text 是一个纯本地运行的开源 OCR(光学字符识别)工具,由 breezedeus 开发。它的核心定位是替代昂贵的视觉模型 API,在文字提取场景下提供更精准、更快、零成本的解决方案。

与 GPT-4o 等视觉模型相比,Pix2Text 专注于”看字”而非”看图”:它能逐字逐行精准提取文字,但在理解图表含义、描述图片内容方面不如视觉模型。最佳实践是两者配合——Pix2Text 负责文字/文档提取,视觉模型只处理图表/照片区域。

Pix2Text 的底层引擎是 PaddleOCR(通过 ONNX Runtime 推理),而非 PyTorch,这使得它可以在纯 CPU 环境下运行,部署体积也远小于需要 PyTorch 的方案。

关键信息

  • 类型:工具(开源 Python 库)
  • 领域:OCR · 文档处理 · AI 工具链
  • 官方网站/地址:github.com/breezedeus/Pix2Text
  • 定价/开源状态:开源免费,纯本地运行,不需要 API key
  • 相关概念:PaddleOCR、ONNX Runtime、版面分析、LaTeX 公式识别

核心特性

文字识别能力

  • 中英文文字识别:基于 PaddleOCR,支持中英文混合识别,逐字逐行精准提取
  • 数学公式识别:将数学公式转换为 LaTeX 格式(LatexOCR 模块,可选依赖 PyTorch)
  • 表格识别:识别表格结构,表格区域截图保存为图片并引用
  • 版面分析:区分标题、正文、图片、表格等区域,理解文档结构
  • Markdown 输出recognize_page() + to_markdown() 直接生成结构化 Markdown

技术架构

  • 核心引擎:PaddleOCR(通过 ONNX Runtime 推理),不需要 PyTorch
  • 依赖链:ONNX Runtime、PaddleOCR、transformers、cnstd、cnocr、rapidocr 等
  • 运行环境:纯 CPU 即可,不需要 GPU;支持 Docker 容器化部署
  • Python 版本:推荐 Python 3.10

与视觉模型的对比

能力Pix2Text视觉模型 (GPT-4o)
文字提取精准,逐字逐行可能漏字改字
公式识别转 LaTeX经常出错
理解图意不行能描述”这是什么”
速度快(本地 CPU)慢(API 调用)
成本免费按 token 收费
隐私本地处理数据上传

安装方式

Docker 部署(推荐,避免依赖污染):

docker build --network=host -t pix2text:latest .

pip 安装(不推荐,依赖解析可能卡死):

pip install pix2text

基本用法

文字识别:

from pix2text import Pix2Text
p2t = Pix2Text()
result = p2t.recognize_text(img)  # img 为 PIL Image 对象

版面分析 + Markdown 输出:

page = p2t.recognize_page('/path/to/image.png')
md = page.to_markdown('/output/dir', markdown_fn='output.md')

PDF 多页处理:

pages = p2t.recognize_pdf('/path/to/file.pdf')
for i, page in enumerate(pages):
    page.to_markdown('/output/dir', markdown_fn=f'page_{i}.md')

适用场景

  • 应该用 Pix2Text:批量处理产品图片、PDF 文档提取、扫描件文字识别、为 AI Agent 提供文字提取能力
  • 应该用视觉模型:图表理解、示意图描述、照片内容分析
  • 最佳搭配:Pix2Text 提取文字+布局 → 视觉模型只看图片区域 → 合并成完整文档

不同素材中的观点

  • 2026-06-13-pix2text-docker-ocr-markdown:这篇素材认为 Pix2Text 是视觉模型的低成本替代方案,特别适合国内网络环境下的本地部署。核心价值在于:纯本地运行零成本、不需要 GPU、Docker 隔离避免依赖污染。文章详细记录了在国内环境下 Docker 构建的踩坑过程,提出了 --no-deps + 手动分批装依赖 + “容器内补装 + commit”的实用技巧。

实用信息

快速上手步骤

  1. 配置 Docker 镜像源(国内环境必须,否则拉镜像超时)
  2. 编写 Dockerfile(使用 --no-deps + 国内 pip 镜像源)
  3. docker build --network=host -t pix2text:latest . 构建镜像
  4. 补装缺失依赖:启动容器 → docker exec 补装 → docker commit
  5. docker run --rm pix2text:latest python3 -c "from pix2text import Pix2Text; print('OK')" 验证

注意事项/避坑指南

  • pip 依赖解析会卡死:用 --no-deps 跳过,手动分批装依赖
  • optimum 版本锁定:Pix2Text 需要 optimum==1.24.0,2.x 去掉了 onnxruntime 子模块
  • 中文 OCR 需要字体:容器内默认没有中文字体,需要挂载 Windows 字体 -v /mnt/c/Windows/Fonts:/fonts
  • PyTorch 可不装:核心 OCR 不依赖 PyTorch,不装可省 2GB+,只有 LaTeX 公式识别需要
  • Docker 镜像源必须在 GUI 改:WSL 里改 ~/.docker/daemon.json 不生效

相关页面