OCR 命令工具
OCR 命令工具是福昕 PDF SDK 自 11.1 起在 Windows 和 Linux 平台提供的命令行 OCR 工具。它适合在不直接集成 OCR API 的情况下,对单页 PDF、整份 PDF 或扫描类 PDF 转可编辑格式任务进行快速处理。
如需了解 OCR API 能力,请参阅 OCR(光学字符识别)。如需了解 OCR 资源包获取方式和资源目录结构,请参阅 OCR 示例配置及运行指南。
适用场景
OCR 命令工具适合以下场景:
- 快速验证 OCR 运行环境、授权和资源目录是否正确
- 在脚本、任务调度系统或批处理流程中执行 OCR
- 由 Java、Python、C#、Node.js 等宿主程序通过进程方式调用
- 将扫描类 PDF 直接输出为可编辑格式
获取方式
OCR 命令工具的获取方式与 OCR 资源包一致。
- 可通过 福昕开发中心 申请试用或获取下载指引
- 也可联系福昕技术支持团队或销售团队获取 OCR 命令工具包。
前置条件
使用 OCR 命令工具前,请确认:
- 已正确部署 Foxit PDF SDK 运行库
- 已准备授权文件:
gsdk_sn.txt、gsdk_key.txt - 已准备 OCR 引擎资源目录
- 工具程序、SDK 依赖文件和授权文件位于同一运行目录
准备运行目录
建议为命令工具创建独立目录,例如 OCRExeTool。
Windows
将以下文件放入同一目录:
ocr_win64.exefsdk_win64.dllgsdk_sn.txtgsdk_key.txt
Linux x64
将以下文件放入同一目录:
ocr_linux64libfsdk_linux64.sogsdk_sn.txtgsdk_key.txt
准备完成后,可使用以下命令查看帮助信息:
bash
ocr_win64.exe --help
bash
./ocr_linux64 --help
命令格式
Windows 下的命令格式如下:
bash
ocr_win64.exe [options]
Linux x64 下的命令格式如下:
bash
./ocr_linux64 [options]
必填参数
| 参数 | 说明 |
|---|---|
-type | OCR 类型。0 = OCRPDFPage,1 = OCRPDFDocument,2 = OCRConvertTo |
-input | 输入 PDF 文件路径 |
-output | 输出文件路径 |
-engine | OCR 引擎资源目录路径 |
常用可选参数
| 参数 | 说明 |
|---|---|
-lang | OCR 语言,例如 "English, Chinese-Simplified" |
-edit | 输出结果是否可编辑,取值为 yes / no |
-pw | 输入 PDF 的密码 |
-range | 页码范围,例如 0,2 |
-format | 仅在 -type 2 时有效。输出格式:0=DOCX、1=DOC、2=RTF、3=XLSX、4=XLS、5=PPTX、6=HTML |
-type 与 OCR API 中的能力对应关系如下:
0:对应OCRPDFPage1:对应OCRPDFDocument2:对应OCRConvertTo
图像与识别处理参数
下列参数主要对应 OCRConfig 中的处理选项:
| 参数 | 说明 |
|---|---|
-is_detect_pictures | 是否检测图片,取值为 yes / no |
-is_remove_noise | 是否去噪,取值为 yes / no |
-is_correct_skew | 是否纠偏,取值为 yes / no |
-is_enable_text_extraction_mode | 是否启用文本提取模式 |
-is_sequentially_process | 是否按顺序处理页面 |
-is_auto_overwrite_resolution | 是否自动覆盖分辨率 |
-resolution_to_overwrite | 手动指定分辨率,例如 300 |
-confidence | OCR 置信度阈值,范围为 0-100 |
-ignore_image_width | 忽略小图像的宽度阈值 |
-ignore_image_height | 忽略小图像的高度阈值 |
参数使用建议
建议优先按以下思路选择参数:
- 只处理单页:使用
-type 0 - 处理整份 PDF:使用
-type 1 - OCR 后直接输出为 Word、Excel、PowerPoint、HTML:使用
-type 2并指定-format - 需要保留可编辑文本结果:设置
-edit yes - 需要限制处理页:设置
-range - 页面噪点较多:保持
-is_remove_noise yes - 页面倾斜明显:保持
-is_correct_skew yes - 原始图像分辨率元数据不准确:关闭
-is_auto_overwrite_resolution并指定-resolution_to_overwrite - 需要过滤低可信识别结果:提高
-confidence
命令示例
Windows
bash
ocr_win64.exe -type 0 -input E:/TestFiles/AboutFoxit_ocr.pdf -output E:/TestResult/OCRPDFPage_AboutFoxit_ocr_edit_yes.pdf -engine E:/OCREngine/x64 -lang English -edit yes -is_detect_pictures yes -is_remove_noise yes -is_correct_skew yes -is_enable_text_extraction_mode yes -is_sequentially_process yes -is_auto_overwrite_resolution yes -resolution_to_overwrite 300 -confidence 38 -range 0,2 -ignore_image_width 20 -ignore_image_height 20
Linux x64
bash
./ocr_linux64 -type 0 -input /home/test/AboutFoxit_ocr.pdf -output /home/test/result/OCRPDFPage_AboutFoxit_ocr_edit_yes.pdf -engine /opt/OCREngine/x64 -lang English -edit yes -is_detect_pictures yes -is_remove_noise yes -is_correct_skew yes -is_enable_text_extraction_mode yes -is_sequentially_process yes -is_auto_overwrite_resolution yes -resolution_to_overwrite 300 -confidence 38 -range 0,2 -ignore_image_width 20 -ignore_image_height 20
从 Java 调用命令工具
如果业务程序不直接集成 OCR API,也可以通过外部进程调用 OCR 命令工具。例如:
java
import java.io.File;
import java.io.IOException;
public class RunOCRTool {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder(
"E:\\OCRExeTool\\ocr_win64.exe",
"-type", "0",
"-input", "E:\\TestFiles\\AboutFoxit_ocr.pdf",
"-output", "E:\\TestResult\\OCRPDFPage_AboutFoxit_ocr_edit_yes.pdf",
"-engine", "E:\\OCREngine\\x64",
"-lang", "English",
"-edit", "yes"
);
processBuilder.directory(new File("E:\\OCRExeTool"));
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
processBuilder.redirectError(ProcessBuilder.Redirect.INHERIT);
Process process = processBuilder.start();
int exitCode = process.waitFor();
System.out.println("Program execution completed, exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
批量处理建议
在批量场景中,建议:
- 先验证单个文件处理链路,再放大到批量任务
- 优先按文件级切分任务,再由外部任务系统并发调度
- 并发度结合 CPU、内存和授权约束评估
- 统一收集标准输出、错误输出和退出码,便于排查失败任务
如果需要在应用内部批量处理多份文档或多个页码范围,也可以评估使用 OCR API 中的 OCRPDFDocuments。
错误码
常见退出码如下:
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 100 | 未知错误 |
| 101 | License 无效 |
| 102 | 参数错误 |
| 103 | GSDK 初始化失败 |
| 104 | OCR 引擎目录错误 |
| 105 | OCR 引擎初始化失败 |
| 106 | 文档加载失败 |
何时使用 OCR 命令工具,何时使用 OCR API
建议按以下原则选择:
- 需要快速运行、脚本化处理、外部进程集成:使用 OCR 命令工具
- 需要嵌入业务逻辑、细化回调控制、直接访问 SDK 对象:使用 OCR(光学字符识别)
如果当前重点是验证资源目录、授权和基本运行链路,建议先跑通命令工具或示例,再决定是否升级为 API 集成。