请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Justin

注册会员

1

主题

4

帖子

99

积分

注册会员

积分
99
  • 95

    金币

  • 主题

  • 帖子

最新发帖
Justin
注册会员   /  发表于:2016-1-10 22:38  /   查看:9069  /  回复:7
想要达到的效果:识别以下图像四个象限里的数字和字母


识别的结果像这种形式:[6,56,76,]
额外的约束条件包括:
1,图像固定大小为736x192
2,四个象限的区域相对固定,可以通过附件ToothZone.zip里的.ozf文件
把它们划分出来
3,每个象限只可能出现数字1到8,字母A到E,且只会有一种字体,一种字体大小

现在遇到的问题是识别率不高,我尝试了Advantage的OcrEngine和Professional的OcrEngine效果都不理想,Advantage的OcrEngine表现略好,但仍然有以下几类识别错误:
1,第二象限“6”被认成“8”,第一象限“6”被认成“13”,测试图像:

2,第四象限“3”被认成“8”,测试图像:


我的代码如下:
  1. List<string> result = new List<string>();
  2.             RasterImage rasterImage = _ocrEngine.RasterCodecsInstance.Load(imagePath, 1);

  3.             // Create an OCR page from this image, transform ownership of the RasterImage object
  4.             using (IOcrPage ocrPage = _ocrEngine.CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))
  5.             {
  6.                 ocrPage.LoadZones(@"C:\Users\ABC\Desktop\ToothZone.ozf");
  7.                 // Recognize the page
  8.                 ocrPage.Recognize(null);

  9.                 // Show the text of all zones
  10.                 for (int zoneIndex = 0; zoneIndex < ocrPage.Zones.Count; zoneIndex++)
  11.                 {
  12.                     result.Add(ocrPage.GetText(zoneIndex));
  13.                 }
  14.             }
  15.             return string.Join("|", result.ToArray());
复制代码


附件里还有更多测试图像


是不是什么参数没有设置对?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-1-11 12:06:00
沙发
回复 1楼Justin的帖子

您好,
您的设置都对,没有问题。
问题出在您的图片分辨率太低了。
文字识别OCR最低要求需要150DPI以上的,您提供的测试图片分辨率只有96DPI。
所以文字识别的结果不准确。


如果能够提高分辨率识别结果会更加准确。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Justin
注册会员   /  发表于:2016-1-12 10:23:00
板凳
我把DPI搞成200,错误少了 不少,但还是有很多,比如:
1,四象限“6”认成“5”

2,三象限“6”认成“8”或者“B”,


3,第二象限“2”认成“7”

4,多了数字,“35”认成了“235”

5,少了数字,&quot;7654&quot;认成了&quot;78'4”


问题主要集中在“6”的识别上面,单看“6”确实很像“8”,但是通过和真正的“8”对比,还是可以分辨出它是“6”的。因为我这里的字体和大小是固定的,有办法传入训练样本来调整识别行为吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-1-12 14:22:00
地板
回复 3楼Justin的帖子

您好, 训练这个功能目前LEADTOOLS并不支持。
针对您的问题,我的建议是去除横竖线之后进行识别。
LEADTOOLS提供了文档清理功能,可以帮助您移除横竖线。
这个例子在Document Clean Up Demo中,这个Demo在这里:LEADTOOLS 19\Shortcuts\Image Processing\.NET Class Libraries\Document Clean-Up
您可以使用这个例子中的去除线方法将图片中的横竖线都去掉后进行识别。
注意的是,去除横竖线要求图片为1bit黑白图,您可以先用这个例子中的Color Resolution功能将图片转换为1bit黑白图。
以上,谢谢。
回复 使用道具 举报
Justin
注册会员   /  发表于:2016-1-15 20:23:00
5#
你好,我把原来的图分割成四个图存下来,然后分别识别,但是效果不是很理想,下面的“7”就识别不了:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-1-18 09:58:00
6#
回复 5楼Justin的帖子

您好,
您的问题我咨询过厂商的工程师,并将您的图片发送给工程师看过。
厂商回复是您提供的图片的清晰度比较低,所以导致识别不准确。
您的图片在横纵分辨率上都属于非常低的,其中150DPI和92DPI的图片清晰度几乎没有差别。
OCR针对的一般是7号以上的字体,您的图片中的数字相当于5号字,程序会将其放大后再识别。
所以如果可以的话,还是请您将原始分辨率提升。像素尽可能高一些。
回复 使用道具 举报
Justin
注册会员   /  发表于:2016-1-20 16:07:00
7#
分辨率不是我能控制的,难就难在这里。那看来只能另想办法了。
回复 使用道具 举报
AvoCaDolol活字格认证 Wyn认证
社区贡献组   /  发表于:2016-1-22 12:33:00
8#
回复 7楼Justin的帖子

目前的文字识别需要更加清晰的图片作为基础。
非常抱歉不能帮到您,如果有任何问题,请随时提出。
谢谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部