9

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

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

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

これにより、出力out.txtが取得され、次に呼び出します

infile.open ("out.txt");

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

それはすべて良いもので、椅子のように機能しますが、最適なソリューションではありません. 私のプロジェクトではビデオを処理しているので、10+ FPS での保存/呼び出し .exe/書き込み/読み取りは、私が実際に探しているものではありません。Tesseract を既存のコードに実装して、Mat を引数として渡してすぐに結果を文字列として取得できるようにしたいと考えています。

Visual Studio 2010 で Tesseract OCR を実装するための適切なチュートリアル (pref. step-by-step) を知っていますか? それとも独自のソリューションですか?

4

3 に答える 3

19

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

そう、

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

ミラー1(Googleドライブ)

ミラー 2 (MediaFire)


2.抽出tesseract.zipする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 およびMatタイプのイメージとのやり取りについては、こちらをご覧ください

于 2013-11-22T09:48:50.667 に答える
2

前回の返信からかなり時間が経ちましたが、他の人の助けになるかもしれません。

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

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

于 2013-11-06T11:39:42.093 に答える