所有刊物

如何测试OCR SDK —— 第二部分

大家好!
假期过后很高兴认识您! 春节快乐!
我们已经准备了文章”如何测试OCR SDK”的第二部分:精度测量

如何将OCR结果与原始文本进行比较

有几种方法可以将OCR结果与原始文本进行比较:

  1. 肉眼估计。 评审OCR测试结果并以某种方式对其进行评级。 优点:此方法速度快,您可以从列表中取消选择最不合适的OCR引擎。 局限性:因为这样操作太耗时间,无法在数百张图片上进行。 因此,您无法统计得到可靠的测试结果。
  2. 跟踪Microsoft Word中的更改。 优点:该方法适用于少量文档的测试。局限性:测试量低,结果不可靠。 除源文档外,还需要具有DOCX文件格式的原始文档,以便将它们与OCR结果进行比较。
  3. Peek-a-Boo。 优点:此方法可以将文件转化为可编辑格式,并且适合测试OCR引擎提供的布局保留。 局限性:仅适用于少量测试,并且测试结果不可靠。 我们强烈建议您不要使用此方法进行数据捕获。
  4. 已验证的源图像基础 + 已解析的结果转换为XML格式 (参考数据) 。 优点:此方法将为您提供最具统计可靠性的结果。 它独立于语言,适合大批量测试。 局限性:此方法需要一些额外的时间来准备测试基础。

在本文章中,我们采用第四种方法描述精度测量,因为它提供了最可靠和可重复的结果。

衡量什么

有几种方法可以衡量准确度:

  1. 通过计算正确识别的符号 (字符) 的百分比。
  2. 通过计算正确识别的单词的百分比。 只有在单词中的所有字符都被正确识别时,才认为该单词被正确识别。
    注意:对于方法1和2,您将需要包含具有正确字符的参考数据作为测试基础。
  3. 通过计算文档结构的正确检测率。
    注意:对于最后一种方法,在您的测试基础参考数据除了需要包含正确的字符以及它们的坐标信息外,还需要包含每个文档的结构信息。这些可以在 XML 中通过特殊实体指定的页眉、页脚、文本列、打印体、图像对象、背景等被定义。

字符错误率可以这样计算:

CER = (S+D+I)/N = (S+D+I)/(S+D+C)

变量说明:

  • S 是替换的数量,
  • D 是删除的数量,
  • I 是插入的数量,
  • C 是更正的数量,
  • N 是参考数据中的字符数量(N = S + D + C)。

单词错误率可以这样计算:

WER = (S+D+I)/N = (S+D+I)/(S+D+C)

变量说明:

  • S 是替换的数量,
  • D 是删除的数量,
  • I 是插入的数量,
  • C 是更正的数量,
  • N 是参考数据中的字符数量(N = S + D + C)。

在此查看更多信息 (https://en.wikipedia.org/wiki/ Word_error_rate)。

要计算S,D,I和C,您需要计算LevenshteinDistance,比如借助以下算法:

// len_s and len_t are the number of characters in string s and t respectively 
int LevenshteinDistance (const char *s, int len_s, const char *t, int len_t)
{
 int cost;
 /* base case: empty strings */
 if (len_s == 0) return len_t;
 if (len_t == 0) return len_s;
 /* test if last characters of the strings match */
 if (s[len_s - 1] == t[len_t - 1])
 cost = 0;
 else
 cost = 1;
 /* return minimum of delete char from s, delete char from t, and delete char from both */
 return minimum(LevenshteinDistance(s, len_s - 1, t, len_t ) + 1, /*insertions*/
 LevenshteinDistance(s, len_s , t, len_t - 1) + 1, /*deletions*/
 LevenshteinDistance(s, len_s - 1, t, len_t - 1) + cost); /*substitutions*/
}

在此处查看更多信息(https://en.wikipedia.org/wiki/Levenshtein_distance#Computing_Levenshtein_distance)。

建议仅在单词的顺序清晰时才应用此算法。 例如,将其应用于在页面上检测到的文本块,但不应用于整个页面。

对方法的选择取决于您的项目或者测试场景,然后选取最优方法

可搜索的PDF。如果要将图像转换为可搜索的PDF,则应计算单词的正确识别百分比,因为最终用户将使用单词来检索整个 OCR 结果,而不是通过符号来检索。

可编辑的格式。如果要将图像转换为DOCX,XLSX等,则需要计算正确识别的符号的百分比并评估布局的保留水平。

数据捕获。如果要基于OCR结果实现自己的数据捕获,最好计算正确识别的单词的百分比。或者,分别计算正确识别的字段的百分比和有错误的字段中的平均错误数可能会更好。 这将给出需要手动编辑的字段数量以及每个字段需要编辑的数量。

对于数据捕获,定义重要的文档是一个不错的办法。 例如,不需要特别识别发票上的页脚,但找到“发票日期”和“总计”等字段至关重要。 牢记这一点将使您能够确定哪个OCR引擎可以更好地满足您的特定任务。

数据捕获通常需要比其它方案有更高的准确性。 在数据捕获方案中,参考数据应包括用于定位这些字段的字段和这些字段的关键字。

如有任何疑问,请填写 我们的网站 上的表格或联系您的销售经理。

开发经验 ABBYY 技术
电子邮件订阅

您的订阅成功!

联系我们
ABBYY免费在线识别服务

试试OCR工具