PaddleOCR是百度开源的超轻量级OCR模型库,本文旨在分享如何通过Delphi使用其框架进行验证码识别。
调用事例基于Git上(https://gitee.com/raoyutian/paddle-ocrsharp)项目开源代码C++使用PaddleOCR中的代码转化而来
unit uPPOCRApi;
interface
/// <summary>
/// OCR识别参数
/// </summary>
type
OCRParameter = packed record
// 通用参数
use_gpu: Boolean; // 是否使用GPU;默认false
gpu_id: Integer; // GPU id,使用GPU时有效;默认0;
gpu_mem: Integer; // 申请的GPU内存;默认4000
cpu_math_library_num_threads: Integer; // CPU预测时的线程数,在机器核数充足的情况下,该值越大,预测速度越快;默认10
enable_mkldnn: Boolean; // 是否使用mkldnn库;默认true
// 前向相关
det: Boolean; // 是否执行文字检测;默认true
rec: Boolean; // 是否执行文字识别;默认true
cls: Boolean; // 是否执行文字方向分类;默认false
// 检测模型相关
max_side_len: Integer; // 输入图像长宽大于960时,等比例缩放图像,使得图像最长边为960,;默认960
det_db_thresh: Single; // 用于过滤DB预测的二值化图像,设置为0.-0.3对结果影响不明显;默认0.3
det_db_box_thresh: Single; // DB后处理过滤box的阈值,如果检测存在漏框情况,可酌情减小;默认0.5
det_db_unclip_ratio: Single; // 表示文本框的紧致程度,越小则文本框更靠近文本;默认1.6
use_dilation: Boolean; // 是否在输出映射上使用膨胀,默认false
det_db_score_mode: Boolean; // 1:使用多边形框计算bbox score,0:使用矩形框计算。矩形框计算速度更快,多边形框对弯曲文本区域计算更准确。
visualize: Boolean; // 是否对结果进行可视化,为1时,预测结果会保存在output字段指定的文件夹下和输入图像同名的图像上。默认false
// 方向分类器相关
use_angle_cls: Boolean; // 是否使用方向分类器,默认false
cls_thresh: Single; // 方向分类器的得分阈值,默认0.9
cls_batch_num: Integer; // 方向分类器batchsize,默认1
// 识别模型相关
rec_batch_num: Integer; // 识别模型batchsize,默认6
rec_img_h: Integer; // 识别模型输入图像高度,默认48
rec_img_w: Integer; // 识别模型输入图像宽度,默认320
show_img_vis: Boolean; // 是否显示预测结果,默认false
use_tensorrt: Boolean; // 使用GPU预测时,是否启动tensorrt,默认false
///初始化属性默认值
procedure InitPropertyDefaultValue;
end;
/// <summary>
/// 表格识别参数
/// </summary>
StructureParameter = record
OCRParameter: OCRParameter;
table_max_len: Integer; // 输入图像长宽大于488时,等比例缩放图像,默认488
merge_no_span_structure: Boolean; // 是否合并空单元格,默认true
table_batch_num: Integer; // 批量识别数量,默认1
end;
/// <summary>
/// 获取最后一次错误信息
/// </summary>
/// <returns></returns>
function GetError: PAnsiChar; stdcall; external 'PaddleOCR.dll';
/// <summary>
/// 是否使用单字节编码(