「Xamarin.AndroidでTesseract-OCRを利用する」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
Administrator (トーク | 投稿記録) (→実行例) |
||
(2人の利用者による、間の2版が非表示) | |||
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ファイル) | + | *: ビルド時にエラーになるときはプロジェクトファイル(.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; |
2021年4月26日 (月) 05:11時点における最新版
Googleがオープンソースで公開してるTesseract-OCRをXamarin.Androidから利用してみる。
手順例[編集 | ソースを編集]
NuGet[編集 | ソースを編集]
- NuGetから「Xamarin.Tesseract」を入れる。
- ソースコードもあるよ。https://github.com/halkar/Tesseract.Xamarin
学習データ[編集 | ソースを編集]
- 学習データをダウンロードしてくる。
- 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;
日本語もそこそこ取れてはいるが微妙なレベルで悩ましい。