Pull to refresh

Сборка Tesseract OCR под MinGW

Reading time5 min
Views21K
tesseract ocr

В одном из своих проектов мне потребовалось распознавание символов и мой выбор остановился на tesseract ocr. На Хабре уже была подобная статья, но на данный момент она не актуальна, во время установки не получилось в точности повторить инструкции автора. В данной статье рассказывается о процессе установке Tesseract OCR под MinGW.

 На данный момент разработкой tesseract ocr занимается компания Google, это может означать, что библиотека будет развиваться в ближайшем времени. Я постараюсь описать процесс установки максимально подробно, начиная с установки MinGW.

Установка MinGW


Для начала нам нужно установить MinGW, его можно скачать с официального сайта проекта. Во время установки необходимо выбрать следующие опции:
  • C++ Compiler
  • MSYS Basic System

Шаг 1. установка MinGW:

tesseract ocr

 

завершение установки mingw

 

Не забываем отметить нужные нам опции: C++ Compiler и MSYS Basic System.

выставляем опции

Дальше переходим в раздел Installation и выбираем  Apply Chanages.

применение изменений

Далее выбираем для установки выбранный пакетов  Apply.

установка компонентов

Дожидаемся конца установки пакетов MinGW и нажимаем Close.

завершение установки

После выполнения данных действий инсталлятор можно закрыть.

Перед началом установки дополнительных пакетов, нам нужно добавить директорию MinGW в PATH.

Для этого переходим в свойства системы.

свойства системы

Далее переходим в Дополнительные параметры системы -> Переменные среды -> Создать.

В имя переменной вводим PATH. в Значение переменной вводим путь до папки с mingw, в нашем случае это C:\MinGW\bin.

Установка PATH

Теперь нам нужно установить несколько пакетов с помощью MinGW Shell, которые нам понадобятся при сборе библиотеки Tesseract OCR.

Для открытия MinGW Shell переходим в папку C:\MinGW\msys\1.0 и запускаем бинарный файл msys.bat 

запуск msys

В открывшуюся консоль вводим следующую команду:
mingw-get install mingw32-automake mingw32-autoconf mingw32-autotools mingw32-libz

результат установки

В данном случае нам сказали, что у нас уже установлены данные пакеты, ничего страшного, это нормально.

Важный пункт! Нам необходимо примонтировать папку с нашим MinGW в MinSYS.

Для этого выполним следующие действия:

Создайте файл C:\MinGW\msys\1.0\etc\fstab что бы смонтировать каталог C:\MinGW на точку монтирования /mingw:
#Win32_Path     Mount_Point
c:/MinGW        /mingw


mount mingw

Отлично, после создания fstab необходимо перезапустить MinGW Shell, достаточно просто закрыть и заново открыть msys.bat.

Установка библиотеки Leptonica


После настройки MinGW нам необходимо установить библиотеку Leptonica. Tesseract ocr для работы с изображениями  использует библиотеку Leptonica, но перед её установкой нам необходимо установить несколько вспомогательных библиотек:
  • libJpeg
  • libPng
  • libTiff

Установка LibJpeg


Для начала создадим каталог в котором будем хранить наши библиотеки, к примеру C:\libs\. В данном каталоге создадим подпапку libjpeg для хранения библиотеки. Теперь когда мы подготовили наше рабочее место, можно скачать LibJpeg с официального сайта и распаковать в нашу папку C:\libs\libjpeg.

После распаковки у меня получился следующий путь до папки libjpeg: C:\libs\libjpeg\jpegsrc.v8c.tar\jpegsrc.v8c\jpeg-8c.

путь до ligjpeg

Теперь нам необходимо собрать и установить библиотеку, для этого переходим в MinGW Shell и вводим следующие команды:
cd /C/libs/libjpeg/jpegsrc.v8c.tar/jpegsrc.v8c/jpeg-8c/
./configure CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/mingw
make
make install

configure

configure 2

конец make

make install

Отлично на этом этапе установка libJpeg завершена.

Установка libPng


Скачиваем архив с исходными кодами с официального сайта проекта и распаковываем в каталог C:\libs\libpng. Возвращаемся в MinGW Shell, процедура установки данной библиотеки будет идентичная установки libJpeg. После распаковки у меня получился следующий каталог: C:\libs\libpng\libpng-1.5.4.tar\libpng-1.5.4
cd /C/libs/libpng/libpng-1.5.4.tar/libpng-1.5.4/
./configure CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/mingw
make
make install


Сборка libTiff


Архив с исходным кодом можно скачать с ftp сервера проекта. Распаковываем архив в C:\libs\libtiff. Сборка данной библиотеки аналогична сборки предыдущих двух библиотек.

После распаковки получился следующий путь: C:\libs\libtiff\tiff-3.9.5.tar\tiff-3.9.5.
cd /C/libs/libtiff/tiff-3.9.5.tar/tiff-3.9.5/
./configure CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/mingw
make
make install


Сборка Leptonica


После установки всех дополнительных библиотек мы переходим к сборе Leptonica. Для начала нам нужно скачать Leptonica 1.71, это важно, нам нужна именно версия 1.71. Как показали тесты, если взять версию выше или ниже, сам tesseract ocr не будет собираться. Но в этой версии есть один баг, который нам предстоит исправить. Для начала скачаем архив с исходными файлами с официального сайта. Распакуем скаченный архив в папку C:/libs/leptonica/. После распаковки у меня получился следующий путь: C:\libs\leptonica\leptonica-1.71.tar\leptonica-1.71.

Следующим шагом будет сборка библиотеки, она ни чем не отличается от сборки предыдущих библиотек:
cd /C/libs/leptonica/leptonica-1.71.tar/leptonica-1.71/
./configure CFLAGS='-O2' CXXFLAGS='-O2' --prefix=/mingw
make
make install

Отлично. Переходим к сборке Tesseract OCR.

Сборка Tesseract OCR


После успешной сборки Leptonica можно приступать к сборке Tesseract OCR. Скачиваем архив с исходным кодом с официального сайта. Распаковываем скаченный архив с исходным кодом Tesseract OCR в папку C:\libs\tesseract. После распаковки у меня получился следующий путь: C:\libs\tesseract\tesseract-ocr-3.02.02.tar\tesseract-ocr-3.02.02\tesseract-ocr.

Собираем наш Tesseracr OCR.
cd /C/libs/tesseract/tesseract-ocr-3.02.02.tar/tesseract-ocr-3.02.02/tesseract-ocr
./configure CFLAGS='-D__MSW32__ -O2' CXXFLAGS='-D__MSW32__-O2' LIBS='-lws2_32' LIBLEPT_HEADERSDIR='/mingw/include' --prefix=/mingw
make
make install

Процесс сборки Tesseracrt занимает достаточно много времени, пока можно сходить выпить чаю.

Заголовочные файлы tesseract ocr будут лежать в C:\MinGW\include\tesseract, заголовочные файлы Leptonica в C:\MinGW\include\leptonica, все библиотеки в C:\mingw\lib.

Для успешной работы будущих программ следует скачать и установить SDK Tesseract ocr с официального сайта.

Осталось исправить маленькие баги, который появляется после установки Tesseract OCR.

Для этого переходить в папку с заголовочными файлами Tesseract OCR C:\MinGW\include\tesseract.

Комментируем в файле platform.h повторное объявление типа BLOB. Должно получиться нечто следующее:
/*typedef struct _BLOB {
unsigned int cbSize;
char *pBlobData;
} BLOB, *LPBLOB;*/

Комментируем объявление класса PBLOB в baseapi.h.

fix

Приложение для тестирования Tesseract OCR


После установки tesseract ocr его можно протестировать, напишем простенькое приложение на C++.
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include <string>
#include <iostream>

int main(int argc, char* argv[])
{
	tesseract::TessBaseAPI ocr;
	ocr.Init(NULL, "eng");

	if(argc > 1) 
	{
		PIX* pix = pixRead(argv[1]);
		ocr.SetImage(pix);
		std::string result = ocr.GetUTF8Text();

		std::cout << "Recognition text: " << result << std::endl;
	}
	else
		std::cout << "Drag and drop image file to program for recognition" << std::endl;

	return 0;
}

Собрать приложение можно из командной строки:
g++ -O2 main.cpp -o ocr.exe -ltesseract -llept -lws2_32

Результат
Tags:
Hubs:
Total votes 14: ↑11 and ↓3+8
Comments3

Articles