NHocr + O2-tools を使用して C# からプログラムをキックして OCR してみます。
NHocr は Debian で win32 用バイナリを作成しました。
(cd 等は省略。)
~/bin/nhocr.exe と ~/src/nhocr-0.17/dic の cctable.utf-8 と 同ディレクトリの PLM.dic を c:\nhocr にコピーします。
環境変数をセットします。 set NHOCR_DICDIR=c:\nhocr 。
このままだと PBM/PGM/PPM の画像しか扱えないので ImageMagick も入れて変換に使用します。

結果は「リフトウ工ア雑工学」
…だいたいあってる。
この手順なら自作プログラムにOCR機能つけて配布出来そうです。
他のソフトも入れてもらう必要がありますが。
NHocr は Debian で win32 用バイナリを作成しました。
$ wget http://www.imglab.org/p/O2/archives/O2-tools-2.00.tar.gz
$ tar xvzf O2-tools-2.00.tar.gz
$ ./configure --prefix=~/O2 --host=i586-mingw32msvc
$ make install
$ wget http://nhocr.googlecode.com/files/nhocr-0.17.tar.gz
$ tar xvzf nhocr-0.17.tar.gz
$ ./configure --with-O2tools=~/O2 --prefix=~/ --host=i586-mingw32msvc
$ make install
(cd 等は省略。)
~/bin/nhocr.exe と ~/src/nhocr-0.17/dic の cctable.utf-8 と 同ディレクトリの PLM.dic を c:\nhocr にコピーします。
環境変数をセットします。 set NHOCR_DICDIR=c:\nhocr 。
このままだと PBM/PGM/PPM の画像しか扱えないので ImageMagick も入れて変換に使用します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
namespace OCR
{
class Program
{
static void Main(string[] args)
{
// 変換
using (Process process = Process.Start(
@"C:\Program Files\ImageMagick-6.2.8-Q16\convert.exe",
@"c:\test.png c:\test.ppm"))
{
process.WaitForExit();
}
// OCR 結果は UTF-8
ProcessStartInfo info =
new ProcessStartInfo(@"c:\nhocr\nhocr.exe", @"-o - -line c:\test.ppm");
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
using (Process process = Process.Start(info))
{
using (TextReader reader = new StreamReader(
process.StandardOutput.BaseStream, Encoding.UTF8))
{
Console.WriteLine(reader.ReadToEnd());
}
process.WaitForExit();
}
Console.WriteLine("push any key.");
Console.Read();
}
}
}
結果は「リフトウ工ア雑工学」
…だいたいあってる。
この手順なら自作プログラムにOCR機能つけて配布出来そうです。
他のソフトも入れてもらう必要がありますが。