Definition at line 951 of file cjkpitch.cpp.
◆ FPAnalyzer()
tesseract::FPAnalyzer::FPAnalyzer |
( |
ICOORD |
page_tr, |
|
|
TO_BLOCK_LIST * |
port_blocks |
|
) |
| |
Definition at line 1031 of file cjkpitch.cpp.
1035 , num_empty_rows_(0)
1036 , max_chars_per_row_(0) {
1037 TO_BLOCK_IT block_it(port_blocks);
1039 for (block_it.mark_cycle_pt(); !block_it.cycled_list(); block_it.forward()) {
1040 TO_BLOCK *block = block_it.data();
1041 if (!block->get_rows()->empty()) {
1047 for (block_it.mark_cycle_pt(); !block_it.cycled_list(); block_it.forward()) {
1048 TO_ROW_IT row_it = block_it.data()->get_rows();
1049 for (row_it.mark_cycle_pt(); !row_it.cycled_list(); row_it.forward()) {
1051 row.Init(row_it.data());
1052 rows_.push_back(row);
1053 size_t num_chars = rows_.back().num_chars();
1054 if (num_chars <= 1) {
1057 if (num_chars > max_chars_per_row_) {
1058 max_chars_per_row_ = num_chars;
void find_repeated_chars(TO_BLOCK *block, bool testing_on)
◆ ~FPAnalyzer()
tesseract::FPAnalyzer::~FPAnalyzer |
( |
| ) |
|
|
default |
◆ DebugOutputResult()
void tesseract::FPAnalyzer::DebugOutputResult |
( |
| ) |
|
|
inline |
Definition at line 1003 of file cjkpitch.cpp.
1004 tprintf(
"FPAnalyzer: final result\n");
1005 for (
size_t i = 0; i < rows_.size(); i++) {
1006 rows_[i].DebugOutputResult(i);
void tprintf(const char *format,...)
◆ EstimatePitch()
void tesseract::FPAnalyzer::EstimatePitch |
( |
bool |
pass1 | ) |
|
Definition at line 1064 of file cjkpitch.cpp.
1065 LocalCorrelation pitch_height_stats;
1069 pitch_height_stats.Clear();
1070 for (
auto &row : rows_) {
1071 row.EstimatePitch(pass1);
1072 if (row.good_pitches()) {
1073 pitch_height_stats.Add(row.height() + row.gap(), row.pitch(), row.good_pitches());
1074 if (row.height_pitch_ratio() > 1.1) {
1082 pitch_height_stats.Finish();
1083 for (
auto &row : rows_) {
1084 if (row.good_pitches() >= 5) {
1087 row.set_estimated_pitch(row.pitch());
1088 }
else if (row.num_chars() > 1) {
1089 float estimated_pitch = pitch_height_stats.EstimateYFor(row.height() + row.gap(), 0.1f);
1094 if (estimated_pitch > row.pitch() || row.pitch() > row.height() * 2.0) {
1095 row.set_estimated_pitch(estimated_pitch);
1097 row.set_estimated_pitch(row.pitch());
◆ FinalizeLargeChars()
void tesseract::FPAnalyzer::FinalizeLargeChars |
( |
| ) |
|
|
inline |
Definition at line 980 of file cjkpitch.cpp.
981 for (
auto &row : rows_) {
982 row.FinalizeLargeChars();
◆ max_iteration()
unsigned tesseract::FPAnalyzer::max_iteration |
( |
| ) |
|
|
inline |
Definition at line 1015 of file cjkpitch.cpp.
1018 return max_chars_per_row_ + 100;
◆ maybe_fixed_pitch()
bool tesseract::FPAnalyzer::maybe_fixed_pitch |
( |
| ) |
|
|
inline |
Definition at line 967 of file cjkpitch.cpp.
968 if (rows_.empty() || rows_.size() <= num_bad_rows_ + num_tall_rows_ + 1) {
◆ MergeFragments()
void tesseract::FPAnalyzer::MergeFragments |
( |
| ) |
|
|
inline |
Definition at line 974 of file cjkpitch.cpp.
975 for (
auto &row : rows_) {
976 row.MergeFragments();
◆ num_rows()
size_t tesseract::FPAnalyzer::num_rows |
( |
| ) |
|
|
inline |
◆ OutputEstimations()
void tesseract::FPAnalyzer::OutputEstimations |
( |
| ) |
|
|
inline |
Definition at line 996 of file cjkpitch.cpp.
997 for (
auto &row : rows_) {
998 row.OutputEstimations();
◆ Pass1Analyze()
void tesseract::FPAnalyzer::Pass1Analyze |
( |
| ) |
|
|
inline |
◆ Pass2Analyze()
bool tesseract::FPAnalyzer::Pass2Analyze |
( |
| ) |
|
|
inline |
Definition at line 986 of file cjkpitch.cpp.
987 bool changed =
false;
988 for (
auto &row : rows_) {
989 if (row.Pass2Analyze()) {
The documentation for this class was generated from the following file: