跳至内容。

如何在 Tesseract 上运行 UNLV 测试

介绍

Tesseract 2.0+ 提供了一些脚本,可以运行第四届 OCR 准确性测试中发布的一些 UNLV 测试。参见 AT-1995.pdf(最初可在 http://www.isri.unlv.edu/ 获取)。提供这些测试脚本的主要目的是让 Tesseract 用户能够验证其安装是否正确,以及是否存在导致识别精度下降的特定于架构的问题。它还用作基准,以展示每个版本的精度改进。开发 Tesseract 的开发人员可能会发现基准测试工具对测量实验性新模块很有用。

请注意,某些特定于架构的差异是必然会发生的。其中大多数应该是由编译器之间浮点运算的处理和优化不同造成的。当然,也有可能存在内存初始化错误,这些错误表现为架构之间的差异,但我们声称已经在 Unicode 化过程中找到了其中大部分错误。

免责声明

UNLV 图像为 G4 压缩,因此您必须使用 TIFF 支持构建 Tesseract,但所有最新版本默认情况下都包含 libtiff。

Windows 用户还必须具有一定的 Unix shell 脚本功能,例如通过 cygwin 或等效工具。

图像

当前脚本仅涵盖 3B 测试集(即 300 dpi 二值图像)的测试。开源 Tesseract 中的自适应阈值与原始版本不同,因为原始自适应阈值未包含在开源版本中,因此 8 位灰度图像测试将无法正确比较,而其他分辨率虽然有趣,但实际上没有起到有用的回归测试目的。

运行测试

请参阅 UNLV 测试的 README 文件,了解有关如何为 Tesseract 4 运行测试的最新说明。

示例结果

以下是 1995 年测试的一些结果,取自 AT-1995.pdf 并重新格式化以匹配 Tesseract 测试工具的输出

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
1995    bus.3B  5959    98.14%  0.00%   1631    96.83%  0.00%   1293    95.73%  0.00%
1995    doe3.3B 36349   97.52%  0.00%   7826    96.34%  0.00%   7042    94.87%  0.00%
1995    mag.3B  15043   97.74%  0.00%   4566    96.01%  0.00%   3379    94.99%  0.00%
1995    news.3B 6432    98.69%  0.00%   1946    97.68%  0.00%   1502    96.94%  0.00%

(“更改”列用于最近的测试,并衡量与这些 1995 年结果的更改。)

使用 gcc 4.0.3-1ubuntu5 编译的 Tesseract 2.00 的结果为

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
gcc4.0  bus.3B  6259    98.04%  5.03%   1691    96.71%  3.68%   1313    95.66   1.55%
gcc4.0  doe3.3B 28850   98.03%  -20.63% 7863    96.32%  0.47%   6688    95.13   -5.03%
gcc4.0  mag.3B  14815   97.78%  -1.52%  4396    96.16%  -3.72%  3124    95.37   -7.55%
gcc4.0  news.3B 7533    98.47%  17.12%  1758    97.91%  -9.66%  1220    97.51   -18.77%
gcc4.0  Total   57457   -       -9.92%  15708   -       -1.63%  12345   -       -6.59%

“更改”列显示了与 1995 年结果相比,精度存在巨大的差异,doe3.3B 测试集的字符错误率降低了 20%,而 news.3B 测试集的字符错误率增加了 17%。由于该引擎自 1995 年测试以来已经完全重新训练,并且现在在具有不同编译器的不同处理器上运行,因此很难确定这种巨大差异的原因。(这也可能部分归因于缺少 Aspirin 包。)

为了说明编译器带来的差异,以下是使用 gcc 4.1.1 编译的相同代码的结果

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
gcc4.1  bus.3B  6258    98.04%  5.02%   1690    96.72%  3.62%   1312    95.67   1.47%
gcc4.1  doe3.3B 28589   98.05%  -21.35% 7864    96.32%  0.49%   6692    95.12   -4.97%
gcc4.1  mag.3B  14800   97.78%  -1.62%  4394    96.16%  -3.77%  3123    95.37   -7.58%
gcc4.1  news.3B 7524    98.47%  16.98%  1759    97.91%  -9.61%  1220    97.51   -18.77%
gcc4.1  Total   57171   -       -10.37% 15707   -       -1.64%  12347   -       -6.58%

错误率没有太大区别,但存在细微的差异。相反,使用 VisualC++ Express 构建的相同代码给出以下结果

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
vc++exp bus.3B  6270    98.04%  5.22%   1695    96.71%  3.92%   1315    95.66   1.70%
vc++exp doe3.3B 29098   98.01%  -19.95% 8246    96.14%  5.37%   7038    94.87   -0.06%
vc++exp mag.3B  14981   97.75%  -0.41%  4435    96.12%  -2.87%  3157    95.32   -6.57%
vc++exp news.3B 7548    98.47%  17.35%  1763    97.90%  -9.40%  1224    97.51   -18.51%
vc++exp Total   57897   -       -9.23%  16139   -       1.06%   12734   -       -3.65%

这显示了错误率的相当大的增长,这是在从代码中消除了一些浮点运算的使用之后的结果。更显著的差异是 Visual C++6,它在单词精度方面略好,但在字符精度方面更差

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
vc6     bus.3B  6298    98.03%  5.69%   1696    96.70%  3.99%   1317    95.65   1.86%
vc6     doe3.3B 29745   97.97%  -18.17% 8105    96.20%  3.57%   6894    94.98   -2.10%
vc6     mag.3B  15036   97.74%  -0.05%  4448    96.11%  -2.58%  3165    95.31   -6.33%
vc6     news.3B 7531    98.47%  17.09%  1745    97.92%  -10.33% 1210    97.53   -19.44%
vc6     Total   58610   -       -8.11%  15994   -       0.16%   12586   -       -4.77%

未来的工作可能集中在使这些差异更小,如果不能完全消除的话,理由是存在差异的地方,就有改进的空间…

Tesseract 更新版本的测试结果 由 Tom Morris 提供

所有版本均使用 Apple C 编译器 Apple LLVM version 7.0.2 (clang-700.1.81) 编译,目标为 x86_64-apple-darwin14.3.0。

Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
3.04.01 bus.3B  8816    97.24%  47.94%  2221    95.68%  36.17%  1629    94.62   25.99%
3.04.01 doe3.3B 48306   96.70%  32.89%  9903    95.36%  26.54%  9020    93.43   28.09%
3.04.01 mag.3B  30860   95.37%  105.15% 7034    93.85%  54.05%  5228    92.25   54.72%
3.04.01 news.3B 19073   96.12%  196.53% 3432    95.92%  76.36%  2685    94.53   78.76%
3.04.01 Total   107055  -       67.84%  22590   -       41.46%  18562   -       40.45%
Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
3.03rc1	bus.3B	8816	97.24%	47.94%	2221	95.68%	36.17%	1629	94.62	25.99%
3.03rc1	doe3.3B	48306	96.70%	32.89%	9903	95.36%	26.54%	9020	93.43	28.09%
3.03rc1	mag.3B	30860	95.37%	105.15%	7034	93.85%	54.05%	5228	92.25	54.72%
3.03rc1	news.3B	19073	96.12%	196.53%	3432	95.92%	76.36%	2685	94.53	78.76%
3.03rc1	Total	107055	-	67.84%	22590	-	41.46%	18562	-	40.45%
Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
3.02.02	bus.3B	6039	98.11%	1.34%	1541	97.01%	-5.52%	1240	95.90	-4.10%
3.02.02	doe3.3B	35988	97.54%	-0.99%	8482	96.03%	8.38%	7640	94.43	8.49%
3.02.02	mag.3B	14367	97.84%	-4.49%	3891	96.60%	-14.78%	3024	95.52	-10.51%
3.02.02	news.3B	7148	98.55%	11.13%	1484	98.23%	-23.74%	1152	97.65	-23.30%
3.02.02	Total	63542	-	-0.38%	15398	-	-3.58%	13056	-	-1.21%
Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
3.01	bus.3B	22384	93.00%	275.63%	2253	95.62%	38.14%	1863	93.85	44.08%
3.01	doe3.3B	301312	79.41%	728.94%	13924	93.48%	77.92%	11665	91.50	65.65%
3.01	mag.3B	160024	75.98%	963.78%	10698	90.65%	134.30%	7261	89.24	114.89%
3.01	news.3B	43454	91.17%	575.59%	3469	95.87%	78.26%	2380	95.15	58.46%
3.01	Total	527174	-	726.51%	30344	-	90.02%	23169	-	75.31%
Testid  Testset Character               Word                    Non-stopword
                Errors  Acc     Change  Errors  Acc     Change  Errors  Acc     Change
2.04	bus.3B	6422	97.99%	7.77%	1750	96.60%	7.30%	1361	95.51	5.26%
2.04	doe3.3B	29514	97.98%	-18.80%	7963	96.27%	1.75%	6762	95.07	-3.98%
2.04	mag.3B	14568	97.81%	-3.16%	4289	96.25%	-6.07%	3053	95.47	-9.65%
2.04	news.3B	7655	98.44%	19.01%	1730	97.94%	-11.10%	1208	97.54	-19.57%
2.04	Total	58159	-	-8.82%	15732	-	-1.48%	12384	-	-6.30%

如何使用 Nick White 的 OCR 评估工具

介绍

Nick White 已经分叉了 ISRI OCR 评估工具的存储库,使其能够轻松地与 UTF-8 一起使用,并且还包含一些辅助脚本。

git clone https://ancientgreekocr.org/ocr-evaluation-tools.git
Tools to test OCR accuracy.

这里特别值得一提的是“tessaccsummary”脚本,当给定图像目录和相应的真实文本以及 .traineddata 文件时,它会对每个页面进行 OCR 并打印出准确率,并在最后给出平均摘要。