导航:
论坛 -> 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懒鬼提速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楼:
樓上的, 有原圖嗎? 我想看一下 TesseractOCR的情況。
----------------------------------------------
-
作者:
2022/5/23 0:34:30
3楼:
以下是GITHUB 上的SAMPLE 的TesseractOCR 4 的結果。 论文 : 《SSH: Single Stage Headless Face Detector》 链接 : https://arxivorg/pdf/1708.03979.pdf 代码 链接 : https://github.com/mahyarnajibi/SSH 摘要 我 们 介绍 了 单 点 无 头 (SSH) 人 脸 检测 器 。 与 两 阶段 提议 分 类 检测 器 不 同 ,SSH 直 接 从 分 类 网 络 中 的 早期 卷 积 层 以 单 阶段 方式 检测 人 脸 。 SSH 没 有 头 部 。 也 就 是 说 , 它 能 够 在 移 除 其 底层 分 类 网 络 的 “ 头 部 "的 同时 实现 最 先进 的 结果 - 即 VGG-16 中 包含 大 量 参数 的 全 连接 的 层 ( 注 : 其 实 就 是 移 除了 VGG 的 三 个 全 连接 层 ) 。 此 外 ,SSH 不 是 依靠 图 像 金 字 塔 来 检 测 具 有 各 种 尺度 的 人 脸 , 而 是 通过 设计 进行 尺度 不 变 。 我 们 同时 在 网 络 的 单个 前 向 传递 中 检 测 具 来 自 不 同 层 不 同 尺 度 的 人 脸 。 这 些 属性 使 SSH 快 速 且 轻 量 级 。 令 人 惊讶 的 是 , 使 用 无 头 的 VGG-16,SSH 在 WIDER 数 据 集 上 击败 了 基于 ResNet101 的 最 好 的 算法 。 尽 管 如 此 , 与 当前 最 好 的 算法 不 同 ,SSH 不 使 用 画像 金字 塔 , 速 度 提高 了 5 倍 。 此 外 , 如 果 部 署 了 图 像 金 字 塔 , 我 们 的 轻 量 级 阅 络 可 以 在 WIDER 数 据 集 的 所 有 子 集 上 实现 state of the art 结果 , 将 AP 提高 2.5%。 SSH 还 可 以 在 FDDB 和 Pascal-Faces 数 据 集 上 使 用 较 小 的 输入 大 小 达到 state of the art 的 结果 , 从 而 在 GPU 上 实现 50 ms /图 像 的 运行 时 间 。 该 代码 可 在 https:/github.com/ mahyarnajibi / SSH 获 得 。
----------------------------------------------
-
作者:
2022/5/23 2:24:35
4楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布无用信息,禁用帐号!
作者:
2022/5/23 9:07:02
5楼:
TesseractOCR中文识别差,paddleocr数字(是指金额超大超长的那种)识别差。建议学paddleocr,它的中文识别效果好
----------------------------------------------
-
作者:
2022/5/23 9:47:21
6楼:
paddleocr vs TesseractOCR 好壞差在哪? 要給出比較,不是空口講白話吧?
----------------------------------------------
-
作者:
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://shop66090024.taobao.com/?spm=a313o.7775905.1998679131.d0011.6f6f2796Z7e3JX
作者:
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://shop66090024.taobao.com/?spm=a313o.7775905.1998679131.d0011.6f6f2796Z7e3JX
作者:
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楼:
谢谢几位老师解答
----------------------------------------------
-