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”的实用技巧。
实用信息
快速上手步骤
- 配置 Docker 镜像源(国内环境必须,否则拉镜像超时)
- 编写 Dockerfile(使用
--no-deps+ 国内 pip 镜像源) docker build --network=host -t pix2text:latest .构建镜像- 补装缺失依赖:启动容器 →
docker exec补装 →docker commit 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不生效