我正在开发一个OCR应用程序来读取数字并自动将它们复制到剪贴板而不是手动输入... 我正在使用( TesseractOCR )......但在识别和图像操作之前,我正在改进图像以便更好地识别。
我使用了ImageMagick库,过滤后的图像如下所示:
但承认的输出是:
446929231986789 //The first and last numbers (4 & 9) were added
所以我想只检测白框来裁剪......
我知道 OpenCV 可以做到这一点,但不幸的是它是 C ++ 库,我不会说那种语言:(
我知道iOS8有一个新的 CIDetector 类型矩形,但我不想忽视之前版本的iOS
//Starting
MagickWandGenesis();
magick_wand = NewMagickWand();
//Reading the image....
NSString *tempFilePath = //Path of image
// Monochrome image
MagickQuantizeImage(magick_wand,2,GRAYColorspace,1,MagickFalse,MagickFalse);
// Write to temporary file
MagickWriteImage(magick_wand,
[tempFilePath cStringUsingEncoding:NSASCIIStringEncoding]
);
DestroyMagickWand(magick_wand);//Free up memory
// Load UIImage from temporary file
UIImage *imgObj = [UIImage imageWithContentsOfFile:tempFilePath];
// Display on device
非常感谢..
答案 0 :(得分:0)
我会选择简单的像素搜索。由于您想要用数字裁剪白色区域,您需要做的就是找到矩形的左,右,上和下边框。如果矩形是轴对齐并且在数字周围有足够的空白区域,则应找到具有连续数量的白色像素的第一行或列。例如,要找到左边框(我猜这将是第78列),从第0列开始搜索并向右移动。对于每列计数连续的白色像素(从上到下单个循环)。连续我指的是不被黑色系列打断的系列。如果计数达到,例如80%的高度,你的左边界。相应地从右侧,顶部或底部开始并沿相反方向移动。我想有一些奇特的程序来检测矩形,但你的输入有很明显的特征。所以不要链接到某些lib我建议DIY。为了加快速度,您可以将行增加2或更多。或者您可以缩小图像,将其设置为2种颜色。
还有一种方法可以做到这一点。从其中一个角落开始用白色填充。