Xamarin.AndroidでTesseract-OCRを利用する

提供: MonoBook
2018年3月1日 (木) 02:52時点におけるimported>Administratorによる版 (ページの作成:「Googleオープンソースで公開してるTesseract-OCRXamarin.Androidから利用してみる。 == 手順例 == === NuGet === * NuGetか...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Googleオープンソースで公開してるTesseract-OCRXamarin.Androidから利用してみる。

手順例

NuGet

  • NuGetから「Xamarin.Tesseract」を入れる。

学習データ

  • 学習データをダウンロードしてくる。
    https://github.com/tesseract-ocr/tessdata/tree/3.04.00
  • Assetsフォルダに「tessdataフォルダ」を作る。
    ビルド時にエラーになるときはプロジェクトファイル(.csprojファイル)を開いて「tessdataフォルダ自体がアセットに追加されている」のを消せ。
  • 「tessdataフォルダ」に学習データ(***.traineddata)を入れる。
    日本語であれば「jpn.traineddata」だ。
  • 学習データ(***.traineddata)のビルドアクションを「AndroidAssets」にする
    ビルドアクションは右クリックだ。

実行例

    // 初期化
    var tesseract = new TesseractApi(this, AssetsDeployment.OncePerInitialization);

    // 引数はjpn.traineddataなら「jpn」
    // 英語(eng.traineddata)と混在させる場合は「eng+jpn」などとする。
    var result = await tesseract.Init("jpn");
    if (!result)
    {
        throw new Exception();
    }

    // SetImageでOCRが実行される。
    // ファイルパス指定でもStreamでもいける。
    await tesseract.SetImage(image);

    // OCRの結果はTextプロパティに格納される
    _textView.Text = tesseract.Text;

日本語もそこそこ取れてはいるが微妙なレベルで悩ましい。