tesseract  5.0.0
loadlang_test.cc
Go to the documentation of this file.
1 // 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 
24 namespace tesseract {
25 
26 class QuickTest : public testing::Test {
27 protected:
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 
39 void 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 
47 class 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 }
64 TEST_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 }
94 TEST_P(LoadLanguage, chi_sim) {
95  LangLoader("chi_sim", GetParam());
96 }
97 TEST_P(LoadLanguage, chi_sim_vert) {
98  LangLoader("chi_sim_vert", GetParam());
99 }
100 TEST_P(LoadLanguage, chi_tra) {
101  LangLoader("chi_tra", GetParam());
102 }
103 TEST_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 }
214 TEST_P(LoadLanguage, ita_old) {
215  LangLoader("ita_old", GetParam());
216 }
218  LangLoader("jav", GetParam());
219 }
221  LangLoader("jpn", GetParam());
222 }
223 TEST_P(LoadLanguage, jpn_vert) {
224  LangLoader("jpn_vert", GetParam());
225 }
227  LangLoader("kan", GetParam());
228 }
230  LangLoader("kat", GetParam());
231 }
232 TEST_P(LoadLanguage, kat_old) {
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 }
248 TEST_P(LoadLanguage, kor_vert) {
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 }
347 TEST_P(LoadLanguage, spa_old) {
348  LangLoader("spa_old", GetParam());
349 }
351  LangLoader("sqi", GetParam());
352 }
354  LangLoader("srp", GetParam());
355 }
356 TEST_P(LoadLanguage, srp_latn) {
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 }
407 TEST_P(LoadLanguage, uzb_cyrl) {
408  LangLoader("uzb_cyrl", GetParam());
409 }
411  LangLoader("vie", GetParam());
412 }
414  LangLoader("yid", GetParam());
415 }
417  LangLoader("yor", GetParam());
418 }
419 
420 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_fast, LoadLanguage,
421  ::testing::Values(TESSDATA_DIR "_fast"));
422 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_best, LoadLanguage,
423  ::testing::Values(TESSDATA_DIR "_best"));
424 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata, LoadLanguage, ::testing::Values(TESSDATA_DIR));
425 
426 // For all scripts
427 
428 class LoadScript : public QuickTest, public ::testing::WithParamInterface<const char *> {};
429 
430 TEST_P(LoadScript, Arabic) {
431  LangLoader("script/Arabic", GetParam());
432 }
433 TEST_P(LoadScript, Armenian) {
434  LangLoader("script/Armenian", GetParam());
435 }
436 TEST_P(LoadScript, Bengali) {
437  LangLoader("script/Bengali", GetParam());
438 }
439 TEST_P(LoadScript, Canadian_Aboriginal) {
440  LangLoader("script/Canadian_Aboriginal", GetParam());
441 }
442 TEST_P(LoadScript, Cherokee) {
443  LangLoader("script/Cherokee", GetParam());
444 }
445 TEST_P(LoadScript, Cyrillic) {
446  LangLoader("script/Cyrillic", GetParam());
447 }
448 TEST_P(LoadScript, Devanagari) {
449  LangLoader("script/Devanagari", GetParam());
450 }
451 TEST_P(LoadScript, Ethiopic) {
452  LangLoader("script/Ethiopic", GetParam());
453 }
454 TEST_P(LoadScript, Fraktur) {
455  LangLoader("script/Fraktur", GetParam());
456 }
457 TEST_P(LoadScript, Georgian) {
458  LangLoader("script/Georgian", GetParam());
459 }
461  LangLoader("script/Greek", GetParam());
462 }
463 TEST_P(LoadScript, Gujarati) {
464  LangLoader("script/Gujarati", GetParam());
465 }
466 TEST_P(LoadScript, Gurmukhi) {
467  LangLoader("script/Gurmukhi", GetParam());
468 }
470  LangLoader("script/HanS", GetParam());
471 }
472 TEST_P(LoadScript, HanS_vert) {
473  LangLoader("script/HanS_vert", GetParam());
474 }
476  LangLoader("script/HanT", GetParam());
477 }
478 TEST_P(LoadScript, HanT_vert) {
479  LangLoader("script/HanT_vert", GetParam());
480 }
481 TEST_P(LoadScript, Hangul) {
482  LangLoader("script/Hangul", GetParam());
483 }
484 TEST_P(LoadScript, Hangul_vert) {
485  LangLoader("script/Hangul_vert", GetParam());
486 }
487 TEST_P(LoadScript, Hebrew) {
488  LangLoader("script/Hebrew", GetParam());
489 }
490 TEST_P(LoadScript, Japanese) {
491  LangLoader("script/Japanese", GetParam());
492 }
493 TEST_P(LoadScript, Japanese_vert) {
494  LangLoader("script/Japanese_vert", GetParam());
495 }
496 TEST_P(LoadScript, Kannada) {
497  LangLoader("script/Kannada", GetParam());
498 }
500  LangLoader("script/Khmer", GetParam());
501 }
503  LangLoader("script/Lao", GetParam());
504 }
506  LangLoader("script/Latin", GetParam());
507 }
508 TEST_P(LoadScript, Malayalam) {
509  LangLoader("script/Malayalam", GetParam());
510 }
511 TEST_P(LoadScript, Myanmar) {
512  LangLoader("script/Myanmar", GetParam());
513 }
515  LangLoader("script/Oriya", GetParam());
516 }
517 TEST_P(LoadScript, Sinhala) {
518  LangLoader("script/Sinhala", GetParam());
519 }
520 TEST_P(LoadScript, Syriac) {
521  LangLoader("script/Syriac", GetParam());
522 }
524  LangLoader("script/Tamil", GetParam());
525 }
526 TEST_P(LoadScript, Telugu) {
527  LangLoader("script/Telugu", GetParam());
528 }
529 TEST_P(LoadScript, Thaana) {
530  LangLoader("script/Thaana", GetParam());
531 }
533  LangLoader("script/Thai", GetParam());
534 }
535 TEST_P(LoadScript, Tibetan) {
536  LangLoader("script/Tibetan", GetParam());
537 }
538 TEST_P(LoadScript, Vietnamese) {
539  LangLoader("script/Vietnamese", GetParam());
540 }
541 
542 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_fast, LoadScript,
543  ::testing::Values(TESSDATA_DIR "_fast"));
544 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata_best, LoadScript,
545  ::testing::Values(TESSDATA_DIR "_best"));
546 INSTANTIATE_TEST_SUITE_P(DISABLED_Tessdata, LoadScript, ::testing::Values(TESSDATA_DIR));
547 
548 class LoadLang : public QuickTest {};
549 
550 // Test Load of English here, as the parameterized tests are disabled by
551 // default.
552 TEST_F(LoadLang, engFast) {
553  LangLoader("eng", TESSDATA_DIR "_fast");
554 }
555 TEST_F(LoadLang, engBest) {
556  LangLoader("eng", TESSDATA_DIR "_best");
557 }
558 TEST_F(LoadLang, engBestInt) {
559  LangLoader("eng", TESSDATA_DIR);
560 }
561 
562 // Use class LoadLang for languages which are NOT there in all three repos
563 TEST_F(LoadLang, kmrFast) {
564  LangLoader("kmr", TESSDATA_DIR "_fast");
565 }
566 TEST_F(LoadLang, kmrBest) {
567  LangLoader("kmr", TESSDATA_DIR "_best");
568 }
569 // TEST_F(LoadLang, kmrBestInt) {LangLoader("kmr" , TESSDATA_DIR);}
570 
571 } // namespace tesseract
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)
void TearDown() override
void SetUp() override