Как реализовать Tesseract для запуска с project в Visual Studio 2010

у меня есть проект C++ в Visual Studio 2010 и я хочу использовать OCR. Я столкнулся со многими "учебниками" для Тессеракта, но, к сожалению, все, что я получил, это головная боль и потерянное время.

в моем проекте у меня есть изображения, хранящиеся в мат. Одно из решений моей проблемы-сохранить этот коврик как изображение (image.jpg, например), а затем вызовите исполняемый файл Tesseract следующим образом:

system("tesseract.exe image.jpg out");

что дает мне выход выход.txt и тогда я называю

infile.open ("out.txt");

для чтения вывода из Tesseract.

Это все хорошо и работает как стул, но это не оптимальное решение. В моем проекте я обрабатываю видео так сохранить/вызов .exe / write / read при 10 + FPS это не то, что я действительно ищу. Я хочу реализовать Tesseract в существующий код, чтобы иметь возможность передать Mat в качестве аргумента и сразу получить результат в виде строки.

знаете ли вы какой-либо хороший учебник(pref. шаг за шагом) для реализации Tesseract OCR с Visual Studio 2010? Или ваше собственное решение?

3 ответов


хорошо, я понял, но это работает для релиз и для Win32 конфигурация (без отладки или x64). Существует много ошибок связывания в конфигурации Debug.

и

1. прежде всего, загрузите подготовленную папку библиотеки (Tesseract + Leptonica) здесь:

Зеркало 1 (Google Диск)

Зеркало 2 (MediaFire)


2. Извлечение tesseract.zip to C:\


3. в Visual Studio, перейдите в раздел C/C++ > General > Additional Include Directories

вставить C:\tesseract\include


4. под Linker > General > Additional Library Directories

вставить C:\tesseract\lib


5. под Linker > Input > Additional Dependencies

добавить:

liblept168.lib
libtesseract302.lib

пример кода должен выглядеть так:

#include <tesseract\baseapi.h>
#include <leptonica\allheaders.h>
#include <iostream>

using namespace std;

int main(void){

    tesseract::TessBaseAPI api;
    api.Init("", "eng", tesseract::OEM_DEFAULT);
    api.SetPageSegMode(static_cast<tesseract::PageSegMode>(7));
    api.SetOutputName("out");

    cout<<"File name:";
    char image[256];
    cin>>image;
    PIX   *pixs = pixRead(image);

    STRING text_out;
    api.ProcessPages(image, NULL, 0, &text_out);

    cout<<text_out.string();

    system("pause");
}

для взаимодействия с OpenCV и мат тип изображения смотреть здесь


прошло много с последнего ответа, но это может быть помощь окружающим;

  1. Я думаю, вы также должны добавить "liblept168.lib " и " liblept168d.lib " для дополнительных зависимостей
  2. добавить "liblept168.dll " и "liblept168d.dll" к месту назначения вашего exe.
  3. добавить #include в код.

(этот ответ должен быть комментарием к ответу Брюса. Извините за путаницу. )


вам нужно использовать библиотеку через API.

вероятно: