Skip to content

OCR 文字识别接口

版本:1.26.0613


OcrParam 结构体

cpp
struct OcrParam {
    int padding = 50;         // [输入] 图像外接白框,提升识别率。默认 50
    int max_size = 1024;      // [输入] 按图像长边缩放,0 表示不缩放。默认 1024
    float sim = 0.5f;         // [输入] 文字置信度阈值。默认 0.5
    float box_thresh = 0.3f;  // [输入] 文本框保留阈值。默认 0.3
    float un_clip_ratio = 1.6f; // [输入] 文字框放大倍率,常见范围 [1.0-2.0]。默认 1.6
    int use_angle_cls = 0;    // [输入] 文本方向分类器。0:关闭,1:启用。默认 0
    int most_angle = 0;       // [输入] 方向投票策略。0:各自角度,1:全局统一。默认 0
};

initOcrv4

cpp
EXPORT_DLL_API int initOcrv4(int nThreads);

功能:初始化 OCR 引擎,从 DLL 内置资源加载模型。

参数类型说明
nThreads输入推理线程数,范围 1~12,超出时自动调整为 1

返回值示例1(成功) / 4(初始化异常)

调用示例

cpp
if (initOcrv4(4) == 1) {
    printf("OCR 初始化成功\n");
}

ocrv4Detect

cpp
EXPORT_DLL_API const char* ocrv4Detect(const char* img_path, OcrParam* param_);

功能:执行 OCR 文字识别,参数通过结构体传入。

参数类型说明
img_path输入待识别图片路径
param_输入OcrParam 结构体指针。传 nullptr 将抛出异常

返回值示例

json
// 成功
[
  {
    "sim": "0.823",
    "text": "学士学位证书",
    "x": 996,
    "x4": 2140,
    "y": 925,
    "y4": 1058
  },
  {
    "sim": "0.814",
    "text": "计算机科学与技术",
    "x": 1767,
    "x4": 2435,
    "y": 1879,
    "y4": 1975
  }
]
// 异常
"4"

调用示例

cpp
OcrParam param;
param.sim = 0.5f;
param.padding = 50;

const char* text = ocrv4Detect("screenshot.png", &param);
printf("识别结果: %s\n", text);

ocrv4DetectParam

cpp
EXPORT_DLL_API const char* ocrv4DetectParam(
    const char* img_path, float sim, int padding,
    int max_size, float box_thresh, float un_clip_ratio,
    int use_angle_cls, int most_angle);

功能:执行 OCR 文字识别,参数平铺传入。

参数类型说明
img_path输入待识别图片路径
sim输入文字置信度阈值
padding输入图像外接白框
max_size输入图像长边缩放值
box_thresh输入文本框保留阈值
un_clip_ratio输入文字框放大倍率
use_angle_cls输入是否启用方向分类(0/1)
most_angle输入是否使用多数角度投票(0/1)

返回值示例:同 ocrv4Detect

json
[
  {
    "sim": "0.823",
    "text": "学士学位证书",
    "x": 996,
    "x4": 2140,
    "y": 925,
    "y4": 1058
  },
  {
    "sim": "0.814",
    "text": "计算机科学与技术",
    "x": 1767,
    "x4": 2435,
    "y": 1879,
    "y4": 1975
  }
]

调用示例

cpp
const char* text = ocrv4DetectParam("screenshot.png", 0.5f, 50, 1024, 0.3f, 1.6f, 0, 0);
printf("识别结果: %s\n", text);

ocrv4DetectParamPointer

cpp
EXPORT_DLL_API const char* ocrv4DetectParamPointer(
    const uint8_t* imgData, int imgLen, float sim, int padding,
    int max_size, float box_thresh, float un_clip_ratio,
    int use_angle_cls, int most_angle);

功能:执行 OCR 文字识别,图片从内存数据加载(而非文件路径),参数平铺传入。

参数类型说明
imgData输入图片内存数据指针(const uint8_t*,指向 PNG/JPG 等原始字节)
imgLen输入图片数据长度(字节数)
sim输入文字置信度阈值
padding输入图像外接白框
max_size输入图像长边缩放值
box_thresh输入文本框保留阈值
un_clip_ratio输入文字框放大倍率
use_angle_cls输入是否启用方向分类(0/1)
most_angle输入是否使用多数角度投票(0/1)

返回值示例:同 ocrv4Detect

json
[
  {
    "sim": "0.823",
    "text": "学士学位证书",
    "x": 996,
    "x4": 2140,
    "y": 925,
    "y4": 1058
  },
  {
    "sim": "0.814",
    "text": "计算机科学与技术",
    "x": 1767,
    "x4": 2435,
    "y": 1879,
    "y4": 1975
  }
]

说明:内部会解码内存数据并写入临时文件后调用 OCR 引擎处理,识别完毕后自动清理临时文件。

调用示例

cpp
FILE* f = fopen("screenshot.png", "rb");
fseek(f, 0, SEEK_END);
int len = ftell(f);
uint8_t* buf = (uint8_t*)malloc(len);
fseek(f, 0, SEEK_SET);
fread(buf, 1, len, f);
fclose(f);

const char* text = ocrv4DetectParamPointer(buf, len, 0.5f, 50, 1024, 0.3f, 1.6f, 0, 0);
printf("识别结果: %s\n", text);
free(buf);