web-dev-qa-db-ja.com

Visual Studio2010でプロジェクトを実行するためにTesseractを実装する方法

Visual Studio2010にC++プロジェクトがあり、OCRを使用したいと考えています。私はTesseractの多くの「チュートリアル」に出くわしましたが、悲しいことに、私が得たのは頭痛と無駄な時間だけでした。

私のプロジェクトでは、画像をMatとして保存しています。私の問題の1つの解決策は、このマットを画像(image.jpgなど)として保存してから、次のようにTesseract実行可能ファイルを呼び出すことです。

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

これで出力out.txtが得られ、それから呼び出します

infile.open ("out.txt");

tesseractからの出力を読み取ります。

それはすべて良いですし、椅子のように機能しますが、それは最適な解決策ではありません。私のプロジェクトではビデオを処理しているので、10 + FPSでsave/call .exe/write/readは私が本当に探しているものではありません。 Tesseractを既存のコードに実装して、Matを引数として渡し、すぐに結果を文字列として取得できるようにしたい。

Visual Studio2010でTesseractOCRを実装するための優れたチュートリアル(ステップバイステップ)を知っていますか?またはあなた自身の解決策?

7
OpenMinded

OK、わかりましたが、ReleaseおよびWin32構成で機能しますのみ(デバッグまたはx64なし)。デバッグ構成の下に多くのリンクエラーがあります。

そう、

1。まず、準備したライブラリフォルダ(Tesseract + Leptonica)をここからダウンロードします。

ミラー1(Googleドライブ)

ミラー2(MediaFire)


2。tesseract.ZipC:\に抽出します


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およびMatタイプの画像との相互作用については、 [〜#〜] here [〜#〜]

19
OpenMinded

前回の返信から多くのことがありましたが、他の人の助けになるかもしれません。

  1. 「liblept168.lib」と「liblept168d.lib」も追加の依存関係に追加する必要があると思います
  2. Exeの宛先に「liblept168.dll」と「liblept168d.dll」を追加します。
  3. コードに#includeを追加します。

(この回答は、ブルースの回答に対するコメントである必要があります。混乱して申し訳ありません。)

APIを介してライブラリを使用する必要があります。

おそらく:

0
Bruce