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", ¶m);
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);