Как реализовать 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) здесь:
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 и мат тип изображения смотреть здесь
прошло много с последнего ответа, но это может быть помощь окружающим;
- Я думаю, вы также должны добавить "liblept168.lib " и " liblept168d.lib " для дополнительных зависимостей
- добавить "liblept168.dll " и "liblept168d.dll" к месту назначения вашего exe.
- добавить #include в код.
(этот ответ должен быть комментарием к ответу Брюса. Извините за путаницу. )
вам нужно использовать библиотеку через API.
вероятно:
начните с downlaoding libs ( https://code.google.com/p/tesseract-ocr/downloads/detail?name=tesseract-3.02.02-win32-lib-include-dirs.zip&can=2&q= ). Они скомпилированы с Visual 2008, но этого должно быть достаточно
использовать API напрямую (например, посмотрите на проект с открытым исходным кодом, используя его: https://code.google.com/p/qtesseract/source/browse/#svn%2Ftrunk%2Ftessdata) и прочитайте ссылки из этого ответа:как я могу использовать Tesseract ocr (или любой другой бесплатный ocr) в небольшом проекте c++?