DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wanggui999
今日帖子: 33
在线用户: 11
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 delphiqiw (delphi我不会) ▲▲▲△△ -
注册会员
2022/5/22 21:42:36
标题:
一个高效跨平台的OCR库 浏览:798
加入我的收藏
楼主: 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];
};
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲△△△ -
注册会员
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/
作者:
男 delphiqiw (delphi我不会) ▲▲▲△△ -
注册会员
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
此帖子包含附件:
PNG 图像
大小:204.1K
----------------------------------------------
-
作者:
男 lordaeron (Terry) ★☆☆☆☆ -
注册会员
2022/5/23 0:31:32
2楼: 樓上的, 有原圖嗎? 我想看一下 TesseractOCR的情況。
----------------------------------------------
-
作者:
男 lordaeron (Terry) ★☆☆☆☆ -
注册会员
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 获 得 。
----------------------------------------------
-
作者:
男 tuhemm (刀锋土禾) ▲△△△△ -
禁用账号
2022/5/23 2:24:35
4楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
发布无用信息,禁用帐号!
作者:
男 l_star (l.star) ★☆☆☆☆ -
普通会员
2022/5/23 9:07:02
5楼: TesseractOCR中文识别差,paddleocr数字(是指金额超大超长的那种)识别差。建议学paddleocr,它的中文识别效果好
----------------------------------------------
-
作者:
男 lordaeron (Terry) ★☆☆☆☆ -
注册会员
2022/5/23 9:47:21
6楼: paddleocr vs TesseractOCR
好壞差在哪? 要給出比較,不是空口講白話吧?
----------------------------------------------
-
作者:
男 supermay (supermay) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 11:16:24
8楼: 把楼上的PChar改成PAnsiChar就可以了

PChar会出事
----------------------------------------------
-
作者:
男 supermay (supermay) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 11:18:34
9楼: 是的,我用的是d2007下的,在D10中pchar是双字的,但DLL的char *都是单字的,所以在D10中必须要用pansichar
----------------------------------------------
https://shop66090024.taobao.com/?spm=a313o.7775905.1998679131.d0011.6f6f2796Z7e3JX
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
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;
----------------------------------------------
-
作者:
男 letianwuji (大器晚成) ▲▲▲▲△ -
注册会员
2022/5/23 14:58:10
10楼: 其实还有一个百度深度,基于这个训练库的github项目,识别文字更精准。
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
作者:
男 delphiqiw (delphi我不会) ▲▲▲△△ -
注册会员
2022/5/23 18:35:14
11楼: 谢谢几位老师解答按此在新窗口浏览图片
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行39.0625毫秒 RSS