本文档解释了 Tesseract OCR 中的单元测试系统,涵盖了测试框架、组织结构以及如何运行测试。有关集成测试的信息,请参阅 集成测试。
Tesseract 使用 Google Test 框架进行单元测试。测试旨在验证各个组件是否能独立正确运行,从而在开发过程中提供快速反馈。测试套件涵盖了多个方面,包括:
来源:unittest/include_gunit.h1-87 unittest/README.md1-91 CONTRIBUTING.md71-84
测试系统使用了几个通用组件:
::testing::Test 的类,用于设置测试环境。用于验证 OCR 识别引擎的测试。
来源:unittest/lstm_test.h1-185 unittest/recodebeam_test.cc1-487 unittest/lstmtrainer_test.cc1-146
用于验证核心数据结构的测试。
来源:unittest/stringrenderer_test.cc1-530 unittest/unicharcompress_test.cc1-249 unittest/dawg_test.cc1-111 unittest/shapetable_test.cc1-237
用于文本规范化、Unicode 处理和连字处理的测试。
来源:unittest/normstrngs_test.cc1-387 unittest/ligature_table_test.cc1-111
用于验证页面布局分析和结果迭代的测试。
来源:unittest/layout_test.cc1-310 unittest/resultiterator_test.cc1-603
StringRenderer 是一个关键的测试组件,它生成带有已知文本的合成测试图像,用于测试识别准确性。
来源:unittest/stringrenderer_test.cc1-530
测试传统(非 LSTM)OCR 引擎的训练系统。
来源:unittest/mastertrainer_test.cc1-288
运行测试需要:
测试数据文件。:
langdata_lstm 目录中的语言数据文件。tessdata、tessdata_best 和 tessdata_fast 目录中的训练模型。必需字体:
子模块:
unittest/third_party/googletest)。test)。来源:unittest/README.md1-91 CONTRIBUTING.md71-84 INSTALL.GIT.md1-66
克隆包含子模块的存储库:
设置构建环境:
获取测试数据:
设置环境变量:
运行测试:
来源:unittest/README.md79-90 INSTALL.GIT.md20-29
大多数测试都使用测试夹具来设置测试环境。
测试使用 Google Test 的预期和断言。
编写 Tesseract 新测试时:
include_gunit.h。一些区域的测试覆盖率有限。
DISABLED_LEGACY_ENGINE 时,一些测试会被跳过。未来的工作可能包括: