OCR 的有效算法

人工智能 机器学习 参考请求 光学字符识别
2021-10-30 03:38:52

我正在使用 Google 的 OCR 从图像中提取文本,例如收据和发票。

有哪些用于理解文本的技术示例?例如,我想提取日期、企业名称、地址、总金额等。

在将此问题标记为“太宽泛”之前,如果有人可以指导我使用行业用于机器学习的正确算法集,那将会很棒。

2个回答

上学期我和我的团队一起做了一个关于 OCR 的项目。
注意:我假设您图片的数据集具有白色背景,上面带有黑色(或其他一些深色文本)。
这些是我们遵循的概述步骤:预处理包括灰度转换、降噪、二值化和倾斜检测。 下一步是分段此过程从图像中提取单个字符。沿 y 轴拍摄的直方图将图像分成几条线。接下来是沿 x 轴的直方图,将它们划分为单词并进一步划分为字符。在这一步结束时,我们使用 Savgol 滤波器来平滑直方图的曲线。 下一步是特征提取
在此处输入图像描述



. 这是最重要的一步。你的代码的准确性取决于你的功能有多好。
我们使用了以下功能:

  • 交叉:计算前景和背景之间的转换次数。我们使用了两条对角线,两条水平线和一条垂直线。你可以使用任何你想要的号码。
  • 分区:将整个字符区域划分为16个区域,并测量每个区域的密度。
  • 投影直方图:每个字符都有唯一的(几乎)垂直和水平直方图签名。
  • 其他功能包括字符中的端点数、循环数和水平/垂直线数。

我们为我们的项目使用了三种不同的分类算法。它们是 KNN(K-最近邻)、人工神经网络(ANN)和额外树分类。他们的 F1 分数分别为 0.84、0.82 和 0.77
对于训练,您需要找到数据集。许多 OCR 数据集可在线获得。确保你使用的是好的。

一个有趣的问题,我认为用于 OCR 的算法是多步骤的“逻辑回归”或“决策树”。

步骤可以

  1. 图像分类 - 在这一步中,图像被分类为“有或没有”文本。
  2. 文本检测 - 在此步骤中,将带有文本的图像分成块,并将块分类为“有或没有”文本。
  3. 字符检测 - 在此步骤中,将带有文本的块分成较小的单个字符框,并与字符数据库进行比较。

该数据库是使用众包的“验证码”项目构建的。