首先有啥好的算法可以捕捉到像样的图像?之后是预处理/图像清洁,最后是 OCR 程序?

Posted

技术标签:

【中文标题】首先有啥好的算法可以捕捉到像样的图像?之后是预处理/图像清洁,最后是 OCR 程序?【英文标题】:What are good algorithms to capture a decent image in the first place? After which comes the pre-processing/image cleaning then finally OCR procedure?首先有什么好的算法可以捕捉到像样的图像?之后是预处理/图像清洁,最后是 OCR 程序? 【发布时间】:2017-01-12 18:57:39 【问题描述】:

我最近一直在做一个小项目。乍一看,这个任务似乎很简单:为以后的 OCR 拍摄质量稍好的图像。 输入设备是一种 ID 读卡器原型,带有摄像头,内嵌有关于信用卡的拍摄区域,名片大小。问题是摄像头会一直处于活动状态,所以当没有卡片或文件放在设备上时,它会看到整个狂野的外部世界(例如,一台装有摄像头用于面部识别的 ATM 机。第一个问题是来确定是否有人站在 ATM 前面,可靠且稳健)。

在我的情况下,类似的问题是确定何时将有效卡完全放置在设备上并且没有移动,然后获取一张或几张图像以供以后的处理模块使用。 p>

我一直在寻找类似的问题。一些答案非常有用且内容丰富,例如:

image processing to improve tesseract OCR accuracy

Preprocessing image for Tesseract OCR with OpenCV

Image cleaning before OCR application

How can I improve the accuracy of Tesseract OCR?

What is the correct pre-processing steps that I should follow to improve the image captured by camera to be converted to text using OCR in android?

但是,他们都假设捕获工作已经完成得相当不错,这意味着没有运动模糊,文档或卡片的有效区域被完整捕获等等。虽然上面链接中的示例是就通常的人工制品(例如失真、曝光不均匀、文本行歪斜等)而言,这本身确实相当具有挑战性,我的问题是我还没有走那么远!

总而言之,我正在寻找现有方法/算法思想/相关论文或链接:

    如何确定设备上是否有文件或卡片? 如何确定卡片的所有有效区域都完全可见?

我能想到的一些潜在有用的线索:

运动 功能点(很多选择,但如何正确使用它们) 当内部摄像头被卡片或文件覆盖时,强度级别会发生显着变化。

第一个问题,难点在于动态背景,如过往的行人、汽车、突然的自然光变化等。

对于第二个问题,问题是卡片或文档的类型不固定,不幸的是 - 至少有人告诉我 :( 这使得分类解决方案有点棘手,因为无法收集足够的训练样本,而不是提到一半或季度插入的卡片……

【问题讨论】:

【参考方案1】:

几天前我在做一个类似的项目。你可以在这里查看link

那里也有安卓版本。但根据您的要求,card.io 是非常好的开源 api。

git 上的版本也可以阅读温和的数学公式。

【讨论】:

【参考方案2】:

要检查卡片是否到位,您可能可以比较两个标准:

图像静止:您可以通过比较两个或多个连续图像并检查平均差 (SAD) 是否大于噪声水平来实现此目的;

有文本:当 OCR 检测到足够数量的字符时。

对于问题的第二部分,恐怕没有答案,因为卡片可能包含 OCR 无法识别的图形或图片,您永远无法确定您看到的是部分卡片还是带有额外内容的卡片。您可以检查整个区域边缘颜色的连续性,但这可能会引发误报。

【讨论】:

以上是关于首先有啥好的算法可以捕捉到像样的图像?之后是预处理/图像清洁,最后是 OCR 程序?的主要内容,如果未能解决你的问题,请参考以下文章

Python有啥好的库可以识别验证码

用opencv实现动检,光照变化有啥好的解决办法啊?

.NET 有啥好的图像识别库吗?

用shader求1张图像的所有像素的平均值有啥好的方法

有啥好的算法可以在加权图中找到如下定义的“最佳”路径?

使用图像映射生成器有啥好的替代方法? [关闭]