tesseract 3.01 actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES

Я встраиваю tesseract 3.01 и magick++ в программу, потому что версии командной строки были слишком медленными. все правильно скомпилировалось, но навсегда у меня не возникло ошибок в компиляторе, но как только я запускаю консольное приложение, я получаю

PS C:\Users\sirus\Documents\Visual Studio 2013\Projects\ConsoleApplication4\Release> .\ConsoleApplication4.exe
first command
actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file ..\ccutil\tessdatamanager.cpp, line 48
PS C:\Users\sirus\Documents\Visual Studio 2013\Projects\ConsoleApplication4\Release> l

поиск в Интернете показывает, что это то, что происходит, когда вам нужны неверные языковые данные, но у меня есть tesseract 3.01 и языковые данные tesseract 3.01, загруженные непосредственно с их сайта с кодом Google.

Я использую Visual Studio 2013 на Windows 8.1 здание 32 бит /MD

вот образец моего источника

#include <stdio.h>
#include <string>
#include <iostream>               
#include <iomanip>
#include <locale>
#include <sstream>
#include <string> 
#include <Magick++.h>
#include "baseapi.h"
#include "allheaders.h"
using namespace Magick;
using namespace std;
using namespace tesseract;
#define MaxRGB ((Magick::Quantum)65545)
tesseract::TessBaseAPI tess;



string cmd = "";
string cmd2 = "";


void img_split(){
    string tesseract = "\"C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe\" text/";
    int rect_y = 141;
    string del = "del /s /q text\\*";
    system(del.c_str());
    for (int x = 1; x < 40; x++){
        rect_y += 19;
        Image image;
        image.read("source.jpg");
        Magick::Image* mImage;
        Image sub_image(image);
        mImage = &sub_image;
        //mImage->write("test.jpg");


        sub_image.chop(Geometry(1481, rect_y));
        sub_image.crop(Geometry(220, 17));

        sub_image.quantizeColorSpace(GRAYColorspace);
        sub_image.quantizeColors(2);
        sub_image.quantizeDither(false);
        sub_image.quantize();
        sub_image.scale(Geometry(2200,170));
        sub_image.antiAlias();
        sub_image.compressType(Magick::NoCompression);


        //const unsigned char* imagedata = (unsigned char*)mImage;
        //tess.SetImage(imagedata, 2200, 170, 1, 17300);
        //tess.Recognize(0);
        //const char* out = tess.GetUTF8Text();
        //cout << "\n\nno idea if this will work: " << out << endl;


        sub_image.write("text/" + static_cast<ostringstream*>(&(ostringstream() << x))->str() + ".gif");
        //cmd2 = tesseract + static_cast<ostringstream*>(&(ostringstream() << x))->str() + ".png text/" + static_cast<ostringstream*>(&(ostringstream() << x))->str();
        //tesseract_ocr(x);
    }

}

int main(int argc, char **argv)
{
    cout << "first command\n";
    //tess.Init(argv[0], "eng", tesseract::OEM_DEFAULT);
    tess.Init(*argv, "eng");
    tess.SetPageSegMode(tesseract::PSM_AUTO);
    cout << "\ntest" << endl;
    InitializeMagick(*argv);
    //img_split();

    return 0;
}

бонусные баллы, если вы можете сказать мне, как правильно передать изображение в sub_image в функцию setimage тессеракта (потому что я почти уверен, что у меня тоже не будет прав)

1 ответ

actual_tessdata_num_entries <= TESSDATA_NUM_ENTRIES: ошибка: ошибка подтверждения: в файле..\ccutil\tessdatamanager.cpp, строка 55

Если вы получили ошибку во время работы tesseract, проверьте, правильно ли вы используете версию обученных данных (например, 3.00 с 3.01). Вы не можете использовать 3,01 обученных данных с тессерактом 3,00.


Подводя итоги, вам нужно просто получить обученные данные для вашей версии... или даже не связываться с обученными данными и использовать те, которые приходят с ним при загрузке.

Проверьте эту ссылку ниже для решения.

https://code.google.com/p/tesseract-ocr/wiki/FAQ

Другие вопросы по тегам