tesseract v5.3.3.20231005
loadlang_test.cc
Go to the documentation of this file.
1
2// File: loadlang_test.cc
3// Description: Test loading of All languages and Scripts for Tesseract.
4// Tests for All languages and scripts are Disabled by default.
5// Force the disabled test to run if required by using the
6// --gtest_also_run_disabled_tests argument. Author: Shree Devi Kumar
7//
8// Licensed under the Apache License, Version 2.0 (the "License");
9// you may not use this file except in compliance with the License.
10// You may obtain a copy of the License at
11// http://www.apache.org/licenses/LICENSE-2.0
12// Unless required by applicable law or agreed to in writing, software
13// distributed under the License is distributed on an "AS IS" BASIS,
14// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15// See the License for the specific language governing permissions and
16// limitations under the License.
18
19#include <tesseract/baseapi.h>
20#include <time.h>
21#include <memory> // std::unique_ptr
22#include "include_gunit.h"
23
24namespace tesseract {
25
26class QuickTest : public testing::Test {
27protected:
28 void SetUp() override {
29 start_time_ = time(nullptr);
30 }
31 void TearDown() override {
32 const time_t end_time = time(nullptr);
33 EXPECT_TRUE(end_time - start_time_ <= 25)
34 << "The test took too long - " << ::testing::PrintToString(end_time - start_time_);
35 }
36 time_t start_time_;
37};
38
39void LangLoader(const char *lang, const char *tessdatadir) {
40 auto api = std::make_unique<tesseract::TessBaseAPI>();
41 ASSERT_FALSE(api->Init(tessdatadir, lang)) << "Could not initialize tesseract for $lang.";
42 api->End();
43}
44
45// For all languages
46
47class LoadLanguage : public QuickTest, public ::testing::WithParamInterface<const char *> {};
48
50 LangLoader("afr", GetParam());
51}
53 LangLoader("amh", GetParam());
54}
56 LangLoader("ara", GetParam());
57}
59 LangLoader("asm", GetParam());
60}
62 LangLoader("aze", GetParam());
63}
64TEST_P(LoadLanguage, aze_cyrl) {
65 LangLoader("aze_cyrl", GetParam());
66}
68 LangLoader("bel", GetParam());
69}
71 LangLoader("ben", GetParam());
72}
74 LangLoader("bod", GetParam());
75}
77 LangLoader("bos", GetParam());
78}
80 LangLoader("bre", GetParam());
81}
83 LangLoader("bul", GetParam());
84}
86 LangLoader("cat", GetParam());
87}
89 LangLoader("ceb", GetParam());
90}
92 LangLoader("ces", GetParam());
93}
95 LangLoader("chi_sim", GetParam());
96}
97TEST_P(LoadLanguage, chi_sim_vert) {
98 LangLoader("chi_sim_vert", GetParam());
99}
101 LangLoader("chi_tra", GetParam());
102}
103TEST_P(LoadLanguage, chi_tra_vert) {
104 LangLoader("chi_tra_vert", GetParam());
105}
107 LangLoader("chr", GetParam());
108}
110 LangLoader("cos", GetParam());
111}
113 LangLoader("cym", GetParam());
114}
116 LangLoader("dan", GetParam());
117}
119 LangLoader("deu", GetParam());
120}
122 LangLoader("div", GetParam());
123}
125 LangLoader("dzo", GetParam());
126}
128 LangLoader("ell", GetParam());
129}
131 LangLoader("eng", GetParam());
132}
134 LangLoader("enm", GetParam());
135}
137 LangLoader("epo", GetParam());
138}
140 LangLoader("est", GetParam());
141}
143 LangLoader("eus", GetParam());
144}
146 LangLoader("fao", GetParam());
147}
149 LangLoader("fas", GetParam());
150}
152 LangLoader("fil", GetParam());
153}
155 LangLoader("fin", GetParam());
156}
158 LangLoader("fra", GetParam());
159}
161 LangLoader("frk", GetParam());
162}
164 LangLoader("frm", GetParam());
165}
167 LangLoader("fry", GetParam());
168}
170 LangLoader("gla", GetParam());
171}
173 LangLoader("gle", GetParam());
174}
176 LangLoader("glg", GetParam());
177}
179 LangLoader("grc", GetParam());
180}
182 LangLoader("guj", GetParam());
183}
185 LangLoader("hat", GetParam());
186}
188 LangLoader("heb", GetParam());
189}
191 LangLoader("hin", GetParam());
192}
194 LangLoader("hrv", GetParam());
195}
197 LangLoader("hun", GetParam());
198}
200 LangLoader("hye", GetParam());
201}
203 LangLoader("iku", GetParam());
204}
206 LangLoader("ind", GetParam());
207}
209 LangLoader("isl", GetParam());
210}
212 LangLoader("ita", GetParam());
213}
215 LangLoader("ita_old", GetParam());
216}
218 LangLoader("jav", GetParam());
219}
221 LangLoader("jpn", GetParam());
222}
224 LangLoader("jpn_vert", GetParam());
225}
227 LangLoader("kan", GetParam());
228}
230 LangLoader("kat", GetParam());
231}
233 LangLoader("kat_old", GetParam());
234}
236 LangLoader("kaz", GetParam());
237}
239 LangLoader("khm", GetParam());
240}
242 LangLoader("kir", GetParam());
243}
244// TEST_P(LoadLanguage, kmr) {LangLoader("kmr" , GetParam());}
246 LangLoader("kor", GetParam());
247}
249 LangLoader("kor_vert", GetParam());
250}
252 LangLoader("lao", GetParam());
253}
255 LangLoader("lat", GetParam());
256}
258 LangLoader("lav", GetParam());
259}
261 LangLoader("lit", GetParam());
262}
264 LangLoader("ltz", GetParam());
265}
267 LangLoader("mal", GetParam());
268}
270 LangLoader("mar", GetParam());
271}
273 LangLoader("mkd", GetParam());
274}
276 LangLoader("mlt", GetParam());
277}
279 LangLoader("mon", GetParam());
280}
282 LangLoader("mri", GetParam());
283}
285 LangLoader("msa", GetParam());
286}
288 LangLoader("mya", GetParam());
289}
291 LangLoader("nep", GetParam());
292}
294 LangLoader("nld", GetParam());
295}
297 LangLoader("nor", GetParam());
298}
300 LangLoader("oci", GetParam());
301}
303 LangLoader("ori", GetParam());
304}
306 LangLoader("osd", GetParam());
307}
309 LangLoader("pan", GetParam());
310}
312 LangLoader("pol", GetParam());
313}
315 LangLoader("por", GetParam());
316}
318 LangLoader("pus", GetParam());
319}
321 LangLoader("que", GetParam());
322}
324 LangLoader("ron", GetParam());
325}
327 LangLoader("rus", GetParam());
328}
330 LangLoader("san", GetParam());
331}
333 LangLoader("sin", GetParam());
334}
336 LangLoader("slk", GetParam());
337}
339 LangLoader("slv", GetParam());
340}
342 LangLoader("snd", GetParam());
343}
345 LangLoader("spa", GetParam());
346}
348 LangLoader("spa_old", GetParam());
349}
351 LangLoader("sqi", GetParam());
352}
354 LangLoader("srp", GetParam());
355}
357 LangLoader("srp_latn", GetParam());
358}
360 LangLoader("sun", GetParam());
361}
363 LangLoader("swa", GetParam());
364}
366 LangLoader("swe", GetParam());
367}
369 LangLoader("syr", GetParam());
370}
372 LangLoader("tam", GetParam());
373}
375 LangLoader("tat", GetParam());
376}
378 LangLoader("tel", GetParam());
379}
381 LangLoader("tgk", GetParam());
382}
384 LangLoader("tha", GetParam());
385}
387 LangLoader("tir", GetParam());
388}
390 LangLoader("ton", GetParam());
391}
393 LangLoader("tur", GetParam());
394}
396 LangLoader("uig", GetParam());
397}
399 LangLoader("ukr", GetParam());
400}
402 LangLoader("urd", GetParam());
403}
405 LangLoader("uzb", GetParam());
406}
408 LangLoader("uzb_cyrl", GetParam());
409}
411 LangLoader("vie", GetParam());
412}
414 LangLoader("yid", GetParam());
415}
417 LangLoader("yor", GetParam());
418}
419
421 ::testing::Values(TESSDATA_DIR "_fast"));
423 ::testing::Values(TESSDATA_DIR "_best"));
424INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata, LoadLanguage, ::testing::Values(TESSDATA_DIR));
425
426// For all scripts
427
428class LoadScript : public QuickTest, public ::testing::WithParamInterface<const char *> {};
429
431 LangLoader("script/Arabic", GetParam());
432}
433TEST_P(LoadScript, Armenian) {
434 LangLoader("script/Armenian", GetParam());
435}
437 LangLoader("script/Bengali", GetParam());
438}
439TEST_P(LoadScript, Canadian_Aboriginal) {
440 LangLoader("script/Canadian_Aboriginal", GetParam());
441}
442TEST_P(LoadScript, Cherokee) {
443 LangLoader("script/Cherokee", GetParam());
444}
445TEST_P(LoadScript, Cyrillic) {
446 LangLoader("script/Cyrillic", GetParam());
447}
448TEST_P(LoadScript, Devanagari) {
449 LangLoader("script/Devanagari", GetParam());
450}
451TEST_P(LoadScript, Ethiopic) {
452 LangLoader("script/Ethiopic", GetParam());
453}
455 LangLoader("script/Fraktur", GetParam());
456}
457TEST_P(LoadScript, Georgian) {
458 LangLoader("script/Georgian", GetParam());
459}
461 LangLoader("script/Greek", GetParam());
462}
463TEST_P(LoadScript, Gujarati) {
464 LangLoader("script/Gujarati", GetParam());
465}
466TEST_P(LoadScript, Gurmukhi) {
467 LangLoader("script/Gurmukhi", GetParam());
468}
470 LangLoader("script/HanS", GetParam());
471}
472TEST_P(LoadScript, HanS_vert) {
473 LangLoader("script/HanS_vert", GetParam());
474}
476 LangLoader("script/HanT", GetParam());
477}
478TEST_P(LoadScript, HanT_vert) {
479 LangLoader("script/HanT_vert", GetParam());
480}
482 LangLoader("script/Hangul", GetParam());
483}
484TEST_P(LoadScript, Hangul_vert) {
485 LangLoader("script/Hangul_vert", GetParam());
486}
488 LangLoader("script/Hebrew", GetParam());
489}
490TEST_P(LoadScript, Japanese) {
491 LangLoader("script/Japanese", GetParam());
492}
493TEST_P(LoadScript, Japanese_vert) {
494 LangLoader("script/Japanese_vert", GetParam());
495}
497 LangLoader("script/Kannada", GetParam());
498}
500 LangLoader("script/Khmer", GetParam());
501}
503 LangLoader("script/Lao", GetParam());
504}
506 LangLoader("script/Latin", GetParam());
507}
508TEST_P(LoadScript, Malayalam) {
509 LangLoader("script/Malayalam", GetParam());
510}
512 LangLoader("script/Myanmar", GetParam());
513}
515 LangLoader("script/Oriya", GetParam());
516}
518 LangLoader("script/Sinhala", GetParam());
519}
521 LangLoader("script/Syriac", GetParam());
522}
524 LangLoader("script/Tamil", GetParam());
525}
527 LangLoader("script/Telugu", GetParam());
528}
530 LangLoader("script/Thaana", GetParam());
531}
533 LangLoader("script/Thai", GetParam());
534}
536 LangLoader("script/Tibetan", GetParam());
537}
538TEST_P(LoadScript, Vietnamese) {
539 LangLoader("script/Vietnamese", GetParam());
540}
541
542INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_fast, LoadScript,
543 ::testing::Values(TESSDATA_DIR "_fast"));
544INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_best, LoadScript,
545 ::testing::Values(TESSDATA_DIR "_best"));
546INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata, LoadScript, ::testing::Values(TESSDATA_DIR));
547
548class LoadLang : public QuickTest {};
549
550// Test Load of English here, as the parameterized tests are disabled by
551// default.
552TEST_F(LoadLang, engFast) {
553 LangLoader("eng", TESSDATA_DIR "_fast");
554}
555TEST_F(LoadLang, engBest) {
556 LangLoader("eng", TESSDATA_DIR "_best");
557}
558TEST_F(LoadLang, engBestInt) {
559 LangLoader("eng", TESSDATA_DIR);
560}
561
562// Use class LoadLang for languages which are NOT there in all three repos
563TEST_F(LoadLang, kmrFast) {
564 LangLoader("kmr", TESSDATA_DIR "_fast");
565}
566TEST_F(LoadLang, kmrBest) {
567 LangLoader("kmr", TESSDATA_DIR "_best");
568}
569// TEST_F(LoadLang, kmrBestInt) {LangLoader("kmr" , TESSDATA_DIR);}
570
571} // namespace tesseract
#define ASSERT_FALSE(condition)
Definition: gtest.h:1994
#define EXPECT_TRUE(condition)
Definition: gtest.h:1982
INSTANTIATE_TEST_SUITE_P(Eng, MatchGroundTruth, ::testing::Values("eng"))
TEST_P(MatchGroundTruth, FastPhototestOCR)
TEST_F(EuroText, FastLatinOCR)
void LangLoader(const char *lang, const char *tessdatadir)
::std::string PrintToString(const T &value)
internal::ValueArray< T... > Values(T... v)
void TearDown() override
void SetUp() override