社内向けに作成していたC#アプリケーションで利用するTesseractのバージョンを4系から5系に更新した概要を簡単にメモしておきます。Tesseractに限らずC#での画像認識に関する情報って、Pythonなどに比べると日本語でも英語でもかなり少ないですよね。ビジネスロジックをつくっていく段階であれば、もちろん他のプログラミング言語向けの情報でも大いに参考になるのですけれど、最初の一歩して「とりあえず動くようにする」ところがその言語なり、ライブラリなりの固有の手順が必要で、そういうところで引っ掛かりがちです。 .NET Framework, .NET向けに作成されたTesseractのラッパーライブラリとしてよく使われているのは恐らくcharlesw/tesseractだと思います。私もこれまでお世話になってきていたのですが、残念ながらTesseract 4.1までしかサポートされていません。今すぐ5系が必要な状況というわけではないですが、余力のある時に乗り換えておいた方が良いこともあるだろうと思って、対応したライブラリを探してみました。 上記のcharleswさんのところから派生したSicos1977/TesseractOCRを導入することで、ほんの少しのコードの修正でTesseract 4系から5系へ移行することができました。 Visual Studioからであれば、NuGetパッケージとして簡単にインストールできます。 以降前のcharlesw/tesseract向けのコードは、非常に簡素に書くとこんな感じ。
using Tesseract;
// 中略
// PictureBoxに表示
pictureBox1.Image = new Bitmap("image\\lipsum.png");
// 文字認識
var engine = new TesseractEngine("tessdataフォルダのパス", "eng");
using (var pix = Pix.LoadFromFile("image\\lipsum.png"))
{
var page = engine.Process(pix);
// 結果表示
textBox1.Text = page.GetText();
}
using TesseractOCR;
// 中略
// PictureBoxに表示
pictureBox1.Image = new Bitmap("image\\lipsum.png");
// 文字認識
var engine = new Engine("tessdataフォルダのパス", "eng");
using (var pix = TesseractOCR.Pix.Image.LoadFromFile("image\\lipsum.png"))
{
var page = engine.Process(pix);
// 結果表示
textBox1.Text = page.Text;
}