导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2022/5/22 21:42:36
标题:
加入我的收藏
楼主:
https://github.com/DayBreak-u/chineseocr_lite 测试了demo速度准确率都很不错,比TesseractOCR效率高。 我想用delphi调用这个库的dll,请教以下c++中的定义转到delphi要怎么写 struct OCR_DETECT_CONFIG { int padding; int maxSideLen; float boxScoreThresh; float boxThresh; float unClipRatio; int doAngle; int mostAngle; }; struct OCR_DETECT_RESULT_POINT { int x; int y; }; struct OCR_DETECT_RESULT_TEXTBLOCK { char * text; float boxScore; unsigned int charScoreSize; float *charScores; OCR_DETECT_RESULT_POINT boxPoint[4]; }; struct OCR_DETECT_RESULT { unsigned int blockSize; char * text; char * resultImageBuffer; unsigned int resultImageBufferSize; OCR_DETECT_RESULT_TEXTBLOCK blocks[0]; };
----------------------------------------------
-
作者:
2022/5/22 21:46:33
1楼:
web服务启动 对于老平台的支持问题(主要指windows平台): opencv通过自行编译,最老可以支持xp。 ncnn(cpu)通过自行编译,最老也能支持xp。 onnxruntime只能支持windows7~10。 所以想上老windows平台,则只能选择ncnn版。
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/ >http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
2022/5/22 21:50:55
1楼:
链接:https://pan.baidu.com/s/16pwsvH80l9z5ym-1U7Umdg 提取码:mpob 模型及dll源码 angle_net.onnx crnn lite Istm.onnx dbnet.onnx keys.txt OcrLiteOnnx.dll
此帖子包含附件: 大小: 204.1K
----------------------------------------------
-
作者:
2022/5/23 0:31:32
2楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
该账号是个傻逼
作者:
2022/5/23 0:34:30
3楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
该账号是个傻逼
作者:
2022/5/23 9:07:02
5楼:
TesseractOCR中文识别差,paddleocr数字(是指金额超大超长的那种)识别差。建议学paddleocr,它的中文识别效果好
----------------------------------------------
-
作者:
2022/5/23 9:47:21
6楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
该账号是个傻逼
作者:
2022/5/23 9:48:47
7楼:
OCR_DETECT_Con_FIG=record padding:integer; maxSideLen:integer; boxScoreThresh:float; boxThresh:float; unClipRatio:float; doAngle:integer; mostAngle:integer; end; OCR_DETECT_RESULT_POINT=record x:integer; y:integer; end; OCR_DETECT_RESULT_TEXTBLOCK=record text:Pchar; boxScore:float; charScoreSize:cardinal; charScores:Pfloat; boxPoint:array[0..3] of OCR_DETECT_RESULT_POINT; end; OCR_DETECT_RESULT=record blockSize:cardinal; text:pchar resultImageBuffer:pchar; resultImageBufferSize:cardinal; blocks:array[0] of OCR_DETECT_RESULT_TEXTBLOCK;//注意这个的应用,这个可能是用指针的 end;
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
作者:
2022/5/23 11:16:24
8楼:
把楼上的PChar改成PAnsiChar就可以了 PChar会出事
----------------------------------------------
-
作者:
2022/5/23 11:18:34
9楼:
是的,我用的是d2007下的,在D10中pchar是双字的,但DLL的char *都是单字的,所以在D10中必须要用pansichar
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
作者:
2022/5/23 11:53:30
9楼:
那个OCR_DETECT_RESULT_TEXTBLOCK blocks[0]的定义,是保留让C代码越界访问数组的,实际上不占用内存。所以这个结构体实际长度不定,只能在堆分配空间操作。 在Delphi中你可以定义为blocks : array[0..0] of OCR_DETECT_RESULT_TEXTBLOCK; 这不会影响程序运行,但是对这个结构体进行sizeof操作得到的结果会与C版本不一致(因为这个结构体本质是变长,所以sizeof数值实际上并无意义)。 假如你非要一个一致的SizeOf运算结果不可,可以补充以下定义: OCR_DETECT_RESULT_TEXTBLOCK_ARRAY = array[0..$ffffff] of OCR_DETECT_RESULT_TEXTBLOCK_ARRAY; POCR_DETECT_RESULT_TEXTBLOCK_ARRAY = ^OCR_DETECT_RESULT_TEXTBLOCK_ARRAY; 然后,在OCR_DETECT_RESULT里定义: function blocks : POCR_DETECT_RESULT_TEXTBLOCK_ARRAY; inline; 函数实现部分: function OCR_DETECT_RESULT.blocks : POCR_DETECT_RESULT_TEXTBLOCK_ARRAY; begin Result := POCR_DETECT_RESULT_TEXTBLOCK_ARRAY(NativeInt(@Self)+SizeOf(Self)); end; 这样,你可以用一致的 myvar.blocks[a] := b;语法去操作这个blocks字段,而且可以得到与C版结构体一致的sizeof结果,但是对blocks取地址值的语法将不能保持一致,@myvar.blocks需要改成直接调用myvar.blocks;
----------------------------------------------
-
作者:
2022/5/23 14:58:10
10楼:
其实还有一个百度深度,基于这个训练库的github项目,识别文字更精准。
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
2022/5/23 18:35:14
11楼:
谢谢几位老师解答
----------------------------------------------
-
作者:
2022/11/3 17:22:32
12楼:
楼主搞定了吗 我也想搞这个 能不能分享一下
----------------------------------------------
-
作者:
2022/11/3 17:22:58
13楼:
楼主搞定了吗 我也想搞这个 能不能分享一下 35071927@qq.com
----------------------------------------------
-
作者:
2022/11/3 21:28:04
14楼:
github上有这个项目的python封装 成exe 批量图片ocr成文字的版本,可以参考下,弄成dll,让delphi调用。
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
2022/11/4 15:43:11
15楼:
整了一个易语言调用的DLL 基本都翻译成D的了 type OCR_DETECT_RESULT_POINT = record x: integer; y: integer; end; TOCR_DETECT_Con_FIG = record padding: Cardinal; maxSideLen: Cardinal; boxScoreThresh: Single; boxThresh: Single; unClipRatio: Single; doAngle: byte; mostAngle: byte; end; OCR_ESULT = record blockSize: Integer; text: PAnsiChar; resultImageBuffer: Pointer; resultImageBufferSize: integer; //blocks : integer; end; // POCR_text = ^TOCR_DETECT_RESULT_TEXTBLOCK; TOCR_DETECT_RESULT_TEXTBLOCK = record text: pansichar; boxScore: Single; charScoreSize: cardinal; charScores: Integer; boxPoint: array[0..3] of OCR_DETECT_RESULT_POINT; end; OCR_DETECT_RESULT = record blockSize: Integer; text: PAnsiChar; resultImageBuffer: Pointer; resultImageBufferSize: integer; //blocks : integer; end;
----------------------------------------------
-