Skip to content

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.txtgsdk_key.txt
  • 已准备 OCR 引擎资源目录
  • 工具程序、SDK 依赖文件和授权文件位于同一运行目录

准备运行目录

建议为命令工具创建独立目录,例如 OCRExeTool

Windows

将以下文件放入同一目录:

  • ocr_win64.exe
  • fsdk_win64.dll
  • gsdk_sn.txt
  • gsdk_key.txt

Linux x64

将以下文件放入同一目录:

  • ocr_linux64
  • libfsdk_linux64.so
  • gsdk_sn.txt
  • gsdk_key.txt

准备完成后,可使用以下命令查看帮助信息:

bash
ocr_win64.exe --help
bash
./ocr_linux64 --help

命令格式

Windows 下的命令格式如下:

bash
ocr_win64.exe [options]

Linux x64 下的命令格式如下:

bash
./ocr_linux64 [options]

必填参数

参数说明
-typeOCR 类型。0 = OCRPDFPage1 = OCRPDFDocument2 = OCRConvertTo
-input输入 PDF 文件路径
-output输出文件路径
-engineOCR 引擎资源目录路径

常用可选参数

参数说明
-langOCR 语言,例如 "English, Chinese-Simplified"
-edit输出结果是否可编辑,取值为 yes / no
-pw输入 PDF 的密码
-range页码范围,例如 0,2
-format仅在 -type 2 时有效。输出格式:0=DOCX1=DOC2=RTF3=XLSX4=XLS5=PPTX6=HTML

-type 与 OCR API 中的能力对应关系如下:

  • 0:对应 OCRPDFPage
  • 1:对应 OCRPDFDocument
  • 2:对应 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
-confidenceOCR 置信度阈值,范围为 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未知错误
101License 无效
102参数错误
103GSDK 初始化失败
104OCR 引擎目录错误
105OCR 引擎初始化失败
106文档加载失败

何时使用 OCR 命令工具,何时使用 OCR API

建议按以下原则选择:

  • 需要快速运行、脚本化处理、外部进程集成:使用 OCR 命令工具
  • 需要嵌入业务逻辑、细化回调控制、直接访问 SDK 对象:使用 OCR(光学字符识别)

如果当前重点是验证资源目录、授权和基本运行链路,建议先跑通命令工具或示例,再决定是否升级为 API 集成。