tesseract
4.1.1
dawg_cache.cpp
Go to the documentation of this file.
1
// File: dawg_cache.cpp
3
// Description: A class that knows about loading and caching dawgs.
4
// Author: David Eger
5
// Created: Fri Jan 27 12:08:00 PST 2012
6
//
7
// (C) Copyright 2012, Google Inc.
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.
17
//
19
20
#include "
dawg_cache.h
"
21
22
#include "
dawg.h
"
23
#include "
object_cache.h
"
24
#include "
strngs.h
"
25
#include "
tessdatamanager.h
"
26
27
namespace
tesseract
{
28
29
struct
DawgLoader
{
30
DawgLoader
(
const
STRING
&lang,
TessdataType
tessdata_dawg_type,
31
int
dawg_debug_level,
TessdataManager
*data_file)
32
:
lang_
(lang),
33
data_file_
(data_file),
34
tessdata_dawg_type_
(tessdata_dawg_type),
35
dawg_debug_level_
(dawg_debug_level) {}
36
37
Dawg
*
Load
();
38
39
STRING
lang_
;
40
TessdataManager
*
data_file_
;
41
TessdataType
tessdata_dawg_type_
;
42
int
dawg_debug_level_
;
43
};
44
45
Dawg
*
DawgCache::GetSquishedDawg
(
const
STRING
&lang,
46
TessdataType
tessdata_dawg_type,
47
int
debug_level,
TessdataManager
*data_file) {
48
STRING
data_id = data_file->
GetDataFileName
();
49
data_id += kTessdataFileSuffixes[tessdata_dawg_type];
50
DawgLoader
loader(lang, tessdata_dawg_type, debug_level, data_file);
51
return
dawgs_.Get(data_id,
NewTessCallback
(&loader, &
DawgLoader::Load
));
52
}
53
54
Dawg
*
DawgLoader::Load
() {
55
TFile
fp;
56
if
(!
data_file_
->
GetComponent
(
tessdata_dawg_type_
, &fp))
return
nullptr
;
57
DawgType
dawg_type;
58
PermuterType
perm_type;
59
switch
(
tessdata_dawg_type_
) {
60
case
TESSDATA_PUNC_DAWG
:
61
case
TESSDATA_LSTM_PUNC_DAWG
:
62
dawg_type =
DAWG_TYPE_PUNCTUATION
;
63
perm_type =
PUNC_PERM
;
64
break
;
65
case
TESSDATA_SYSTEM_DAWG
:
66
case
TESSDATA_LSTM_SYSTEM_DAWG
:
67
dawg_type =
DAWG_TYPE_WORD
;
68
perm_type =
SYSTEM_DAWG_PERM
;
69
break
;
70
case
TESSDATA_NUMBER_DAWG
:
71
case
TESSDATA_LSTM_NUMBER_DAWG
:
72
dawg_type =
DAWG_TYPE_NUMBER
;
73
perm_type =
NUMBER_PERM
;
74
break
;
75
case
TESSDATA_BIGRAM_DAWG
:
76
dawg_type =
DAWG_TYPE_WORD
;
// doesn't actually matter
77
perm_type =
COMPOUND_PERM
;
// doesn't actually matter
78
break
;
79
case
TESSDATA_UNAMBIG_DAWG
:
80
dawg_type =
DAWG_TYPE_WORD
;
81
perm_type =
SYSTEM_DAWG_PERM
;
82
break
;
83
case
TESSDATA_FREQ_DAWG
:
84
dawg_type =
DAWG_TYPE_WORD
;
85
perm_type =
FREQ_DAWG_PERM
;
86
break
;
87
default
:
88
return
nullptr
;
89
}
90
auto
*retval =
91
new
SquishedDawg
(dawg_type,
lang_
, perm_type,
dawg_debug_level_
);
92
if
(retval->Load(&fp))
return
retval;
93
delete
retval;
94
return
nullptr
;
95
}
96
97
}
// namespace tesseract
tesseract::Dawg
Definition:
dawg.h:115
PUNC_PERM
@ PUNC_PERM
Definition:
ratngs.h:234
tesseract::DawgLoader::DawgLoader
DawgLoader(const STRING &lang, TessdataType tessdata_dawg_type, int dawg_debug_level, TessdataManager *data_file)
Definition:
dawg_cache.cpp:30
tesseract::TESSDATA_FREQ_DAWG
@ TESSDATA_FREQ_DAWG
Definition:
tessdatamanager.h:66
tesseract::TESSDATA_SYSTEM_DAWG
@ TESSDATA_SYSTEM_DAWG
Definition:
tessdatamanager.h:64
tesseract::TESSDATA_BIGRAM_DAWG
@ TESSDATA_BIGRAM_DAWG
Definition:
tessdatamanager.h:71
SYSTEM_DAWG_PERM
@ SYSTEM_DAWG_PERM
Definition:
ratngs.h:241
tesseract::DAWG_TYPE_NUMBER
@ DAWG_TYPE_NUMBER
Definition:
dawg.h:71
tesseract
Definition:
altorenderer.cpp:25
tesseract::DawgLoader::data_file_
TessdataManager * data_file_
Definition:
dawg_cache.cpp:40
tesseract::DawgLoader::lang_
STRING lang_
Definition:
dawg_cache.cpp:39
tesseract::DawgLoader::Load
Dawg * Load()
Definition:
dawg_cache.cpp:54
tesseract::TESSDATA_PUNC_DAWG
@ TESSDATA_PUNC_DAWG
Definition:
tessdatamanager.h:63
tesseract::TessdataManager
Definition:
tessdatamanager.h:126
strngs.h
COMPOUND_PERM
@ COMPOUND_PERM
Definition:
ratngs.h:245
tesseract::TESSDATA_LSTM_SYSTEM_DAWG
@ TESSDATA_LSTM_SYSTEM_DAWG
Definition:
tessdatamanager.h:76
tesseract::DAWG_TYPE_WORD
@ DAWG_TYPE_WORD
Definition:
dawg.h:70
PermuterType
PermuterType
Definition:
ratngs.h:232
tesseract::TESSDATA_LSTM_NUMBER_DAWG
@ TESSDATA_LSTM_NUMBER_DAWG
Definition:
tessdatamanager.h:77
tesseract::DawgLoader
Definition:
dawg_cache.cpp:29
object_cache.h
tesseract::TessdataType
TessdataType
Definition:
tessdatamanager.h:56
NUMBER_PERM
@ NUMBER_PERM
Definition:
ratngs.h:239
tesseract::TessdataManager::GetDataFileName
const STRING & GetDataFileName() const
Definition:
tessdatamanager.h:186
tessdatamanager.h
tesseract::DawgType
DawgType
Definition:
dawg.h:68
tesseract::DawgLoader::tessdata_dawg_type_
TessdataType tessdata_dawg_type_
Definition:
dawg_cache.cpp:41
NewTessCallback
_TessMemberResultCallback_0_0< true, R, T1 >::base * NewTessCallback(T1 *obj, R(T2::*member)())
Definition:
tesscallback.h:91
tesseract::DawgLoader::dawg_debug_level_
int dawg_debug_level_
Definition:
dawg_cache.cpp:42
tesseract::TESSDATA_UNAMBIG_DAWG
@ TESSDATA_UNAMBIG_DAWG
Definition:
tessdatamanager.h:72
tesseract::TESSDATA_LSTM_PUNC_DAWG
@ TESSDATA_LSTM_PUNC_DAWG
Definition:
tessdatamanager.h:75
dawg_cache.h
FREQ_DAWG_PERM
@ FREQ_DAWG_PERM
Definition:
ratngs.h:244
tesseract::SquishedDawg
Definition:
dawg.h:407
dawg.h
tesseract::TessdataManager::GetComponent
bool GetComponent(TessdataType type, TFile *fp)
Definition:
tessdatamanager.cpp:216
STRING
Definition:
strngs.h:45
tesseract::TESSDATA_NUMBER_DAWG
@ TESSDATA_NUMBER_DAWG
Definition:
tessdatamanager.h:65
tesseract::TFile
Definition:
serialis.h:76
tesseract::DawgCache::GetSquishedDawg
Dawg * GetSquishedDawg(const STRING &lang, TessdataType tessdata_dawg_type, int debug_level, TessdataManager *data_file)
Definition:
dawg_cache.cpp:45
tesseract::DAWG_TYPE_PUNCTUATION
@ DAWG_TYPE_PUNCTUATION
Definition:
dawg.h:69
src
dict
dawg_cache.cpp
Generated on Thu Mar 26 2020 00:00:00 for tesseract by
1.8.18