SuperAPI AI 工具集

extracting-with-ocr

数据与分析

查看项目

更新于 10-16 03:59

技能介绍

用途

当文档是基于图像的——扫描版 PDF、拍摄的页面、截图、含文字的 JPEG/PNG/TIFF——可使用本技能。Xberg 会自动对光栅图像执行 OCR,并自动检测缺少文本层的 PDF。当某个「看起来是文本」的 PDF 提取结果为空或乱码时,可强制启用 OCR。

何时强制启用 OCR:

  • 提取返回空的 content 字段,但文件在视觉上能正常打开。
  • PDF 文本层是垃圾数据(从查看器复制粘贴产生乱码)。
  • 希望在混合的扫描版与数字版 PDF 上获得一致的输出。

示例命令:

xberg extract scan.pdf --force-ocr=true
xberg extract scan.pdf --ocr=true --ocr-language eng

如果某页的文本层不可靠,--force-ocr=true 会重新栅格化并对每一页运行 OCR。

后端

Tesseract 是默认后端,随 CLI 一同提供,无需额外安装。其他后端为选择性启用:

后端 参数 安装 说明
Tesseract --ocr-backend tesseract(默认) 内置 最佳通用选择,通过 tessdata 支持 100 多种语言。
PaddleOCR --ocr-backend paddle-ocr 内置(ONNX Runtime) 擅长亚洲文字。在 WASM 或 Windows 上不可用。
Candle VLM --ocr-backend candle-trocr(及其他 candle-*) 内置(Candle) 本地视觉 OCR 模型(candle-trocr、candle-paddleocr-vl、candle-glm-ocr、candle-deepseek-ocr)。
VLM(托管) --ocr-backend vlm + --vlm-model liter-llm 提供方(--vlm-api-key) 通过 liter-llm 使用多模态 LLM。当 OCR 在密集或手写版式上失败时使用。

先选 Tesseract,仅在准确率不可接受时才切换。

语言包

Tesseract 使用 ISO 639-2 代码,默认是 eng。可用 + 组合:

xberg extract menu.jpg --ocr=true --ocr-language "eng+deu"
xberg extract bilingual.pdf --ocr-language "eng+jpn"
xberg extract any.pdf --ocr-language all   # 所有已安装语言包

在操作系统层面安装缺失的语言包:

# macOS
brew install tesseract-lang

# Debian/Ubuntu
sudo apt install tesseract-ocr-deu tesseract-ocr-jpn tesseract-ocr-fra

# 仅安装特定语言
sudo apt install tesseract-ocr-<iso639-2>

若请求的语言包未安装,Xberg 会快速失败并给出有用错误,错误中会指出缺失的文件名。

常用参数

  • --ocr=true — 启用 OCR(对图像和扫描版 PDF 自动启用)。
  • --force-ocr=true — 即使存在文本层也对每一页执行 OCR。
  • --disable-ocr=true — 从不执行 OCR(仅提取内嵌文本,否则失败)。
  • --ocr-language <lang> — 单个代码、用 + 连接的列表,或 all。
  • --ocr-backend <tesseract|paddle-ocr|vlm|candle-trocr|candle-paddleocr-vl|candle-glm-ocr|candle-deepseek-ocr> — 选择后端。
  • --ocr-auto-rotate=true — 通过自动旋转模型进行预旋转。
  • --acceleration <cpu|coreml|cuda|tensorrt|auto> — 用于 paddle-ocr / auto-rotate / 版式模型的 ONNX 加速器。

性能建议

  • 缓存默认开启。对同一文件与配置重复提取是即时的。除非有理由,不要传 --no-cache=true。
  • 批量 OCR 使用 xberg batch *.pdf --ocr=true——内部工作池会跨 CPU 核心并行。内存紧张时用 --max-concurrent N 限制并发。
  • 仅在低分辨率扫描件时提高 --target-dpi(默认 300)。更高 DPI 更慢;印刷文本通常 200 足够。
  • 仅在页面可能旋转时启用 --ocr-auto-rotate=true;分类器会增加延迟。
  • 在 Apple Silicon 上,对于 paddle-ocr 和版式检测,--acceleration coreml 通常优于 CPU。

配置文件替代方案

较长的参数链应放入 xberg.toml——会从当前工作目录向上自动发现。

force_ocr = true
output_format = "markdown"

[ocr]
backend = "tesseract"
language = "eng+deu"
auto_rotate = true

随后直接运行:

xberg extract document.pdf

常见失败模式

  • 「missing tessdata」——在操作系统层面安装语言包(见上文)。
  • 扫描版 PDF 未加 --force-ocr 时内容为空——文件带有虚假的零宽文本层。用 --force-ocr=true 重新运行。
  • 旋转页面上的 OCR——加上 --ocr-auto-rotate=true 或预先旋转。
  • CJK 输出乱码——确保安装了正确的语言包并通过 --ocr-language 传入;中文/日文可考虑 paddle-ocr。

完整的参数与配置 schema 见同项目 xberg 技能的 references/cli-reference.md 和 references/configuration.md。