「Xamarin.AndroidでTesseract-OCRを利用する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
 
(2人の利用者による、間の3版が非表示)
4行目: 4行目:
 
=== NuGet ===
 
=== NuGet ===
 
* [[NuGet]]から「Xamarin.Tesseract」を入れる。
 
* [[NuGet]]から「Xamarin.Tesseract」を入れる。
 +
*: ソースコードもあるよ。https://github.com/halkar/Tesseract.Xamarin
  
 
=== 学習データ ===
 
=== 学習データ ===
9行目: 10行目:
 
*: https://github.com/tesseract-ocr/tessdata/tree/3.04.00
 
*: https://github.com/tesseract-ocr/tessdata/tree/3.04.00
 
* Assetsフォルダに「tessdataフォルダ」を作る。
 
* Assetsフォルダに「tessdataフォルダ」を作る。
*: ビルド時にエラーになるときはプロジェクトファイル(.csprojファイル)を開いて「tessdataフォルダ自体がアセットに追加されている」のを消せ。
+
*: ビルド時にエラーになるときはプロジェクトファイル(.csprojファイル)を開いて「tessdata」で検索し関連する行を一度すべて消せ。
 
* 「tessdataフォルダ」に学習データ(***.traineddata)を入れる。
 
* 「tessdataフォルダ」に学習データ(***.traineddata)を入れる。
 
*: 日本語であれば「jpn.traineddata」だ。
 
*: 日本語であれば「jpn.traineddata」だ。
16行目: 17行目:
  
 
=== 実行例 ===
 
=== 実行例 ===
<source>
+
<source lang="csharp">
 
     using Tesseract;
 
     using Tesseract;
 
     using Tesseract.Droid;
 
     using Tesseract.Droid;
45行目: 46行目:
  
 
[[category: Xamarin.Android]]
 
[[category: Xamarin.Android]]
 +
[[category: Tesseract]]

2021年4月26日 (月) 05:11時点における最新版

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

手順例[編集 | ソースを編集]

NuGet[編集 | ソースを編集]

学習データ[編集 | ソースを編集]

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

実行例[編集 | ソースを編集]

    using Tesseract;
    using Tesseract.Droid;

    // 〜〜〜中略〜〜〜

    // 初期化
    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;

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