26 std::locale::global(std::locale(
""));
33 std::string
MakeFakeDoc(
int num_pages,
unsigned doc_id, std::vector<std::string> *page_texts) {
35 const int kImageSize = 1048576;
38 std::vector<char> fake_image(kImageSize, 0);
40 for (
int p = 0; p < num_pages; ++p) {
43 snprintf(text,
sizeof(text),
"Page %d of %d in doc %u", p, num_pages, doc_id);
44 page_texts->push_back(text);
47 fake_image.size(), (*page_texts)[p].c_str(),
nullptr);
48 EXPECT_EQ(kImageSize, imagedata->
MemoryUsed());
52 std::string filename =
54 filename += std::to_string(doc_id) +
".lstmf";
55 EXPECT_TRUE(write_doc.
SaveDocument(filename.c_str(),
nullptr));
64 const int kNumPages = 12;
66 const int kMemoryAllowances[] = {2000000, 4000000, 1000000, 100000000, 0};
68 const int kPageReadOrder[] = {0, 1, 2, 3, 8, 4, 5, 6, 7, 11, 10, 9, -1};
70 std::vector<std::string> page_texts;
71 std::string filename = MakeFakeDoc(kNumPages, 0, &page_texts);
74 for (
int m = 0; kMemoryAllowances[m] > 0; ++m) {
76 EXPECT_TRUE(read_doc.
LoadDocument(filename.c_str(), 0, kMemoryAllowances[m],
nullptr));
77 LOG(
ERROR) <<
"Allowance = " << kMemoryAllowances[m];
79 for (
int p = 0; kPageReadOrder[p] >= 0; ++p) {
80 int page = kPageReadOrder[p];
82 EXPECT_NE(
nullptr, imagedata);
85 EXPECT_STREQ(page_texts[page].c_str(), imagedata->
transcription().c_str());
94 const std::vector<int> kNumPages = {6, 5, 7};
95 std::vector<std::vector<std::string>> page_texts;
96 std::vector<std::string> filenames;
97 for (
size_t d = 0; d < kNumPages.size(); ++d) {
98 page_texts.emplace_back(std::vector<std::string>());
99 std::string filename = MakeFakeDoc(kNumPages[d], d, &page_texts.back());
100 filenames.push_back(filename);
108 for (
int p = 0; p <= 21; ++p) {
112 CHECK(robin_data !=
nullptr);
113 CHECK(serial_data !=
nullptr);
114 int robin_doc = p % kNumPages.size();
115 int robin_page = p / kNumPages.size() % kNumPages[robin_doc];
117 EXPECT_STREQ(page_texts[robin_doc][robin_page].c_str(), robin_data->
transcription().c_str());
118 int serial_doc = p / kNumPages[0] % kNumPages.size();
119 int serial_page = p % kNumPages[0] % kNumPages[serial_doc];
120 EXPECT_STREQ(page_texts[serial_doc][serial_page].c_str(), serial_data->
transcription().c_str());
TEST_F(EuroText, FastLatinOCR)
const std::string & transcription() const
static ImageData * Build(const char *name, int page_number, const char *lang, const char *imagedata, int imagedatasize, const char *truth_text, const char *box_text)
TESS_API bool SaveDocument(const char *filename, FileWriter writer)
TESS_API bool LoadDocument(const char *filename, int start_page, int64_t max_memory, FileReader reader)
TESS_API const ImageData * GetPage(int index)
TESS_API void AddPageToDocument(ImageData *page)
const ImageData * GetPageBySerial(int serial)
TESS_API bool LoadDocuments(const std::vector< std::string > &filenames, CachingStrategy cache_strategy, FileReader reader)
std::string MakeFakeDoc(int num_pages, unsigned doc_id, std::vector< std::string > *page_texts)
static std::string JoinPath(const std::string &s1, const std::string &s2)