はじめに
以前にもC#でOCRを作りました。touch-sp.hatenablog.com
前回はTesseract 3でしたが今回はTesseract 4を使ってみます。
環境
Windows10 Pro 64bit Visual Studio Community 2019 .NET Framework 4.5.2Visual Studio 2019
>ツール
>Nugetパッケージマネージャー
>ソリューションのNugetパッケージの管理
で「tesseract4.1.1」をインストールします。
「tesseract」が見つけられない時には図の赤丸のところに注意して下さい。
このような選択画面が出たら「プロジェクトファイルのPackageReference」を選択して下さい。
学習済みデータのダウンロード
こちらから「jpn.traineddata」をダウンロードして実行ファイル(exeファイル)と同じフォルダに保存します。Windowsフォームの作成
フォームにボタンとテキストボックスを配置してボタンにクリックイベントを追加します。テキストボックスはマルチラインにチェックして下さい。
C#コード
using System; using System.Drawing; using System.Windows.Forms; using Tesseract; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (Clipboard.ContainsImage()) { var img = (Bitmap)Clipboard.GetImage(); using (var tesseract = new TesseractEngine("./", "jpn")) { Pix pix = PixConverter.ToPix(img); Page page = tesseract.Process(pix); textBox1.Text = page.GetText().Replace("\n", "\r\n"); } } } } }
使い方
「Snipping Tool」または「切り取り&スケッチ」を使って画面の一部を選択しクリップボードにコピーして下さい。その後フォーム上に配置したボタンをクリックするとテキストボックスに結果が表示されます。このような感じです。
Tesseract 3とTesseract 4の違い
Tesseract 4では「PixConverter.ToPix」を使うことによって「Format32bppRgb」から「Format24bppRgb」へのフォーマット変換が不要になっています。その他
PythonでもOCRを作りました。よかったらそちらも読んで下さい。touch-sp.hatenablog.com
注意点(エラーの対処法)
PixConverterが使えない
このエラーが出る人が多いらしくよく検索されています。一番最初にプロジェクトを作成する段階で「Windowsフォームアプリ」ではなく「Windowsフォームアプリケーション(.NET Framework)」を選択する必要があります。自分もここで一回つまづきました。