紙媒体でも実行したい
というわけでふと写真等からソースコードを生成して実行してみようと思った。
初めにペイントでHello Worldを書いたもの
1.tesseract-ocrはnugetから導入。
2.適当に画像に前処理する(OpenCVSharp
3.走らせる
using (var engine = new TesseractEngine(traineddataPath, "eng", EngineMode.Default)) using (var src = new System.Drawing.Bitmap(path)) { //ホワイトリスト処理とか云々 var result = engine.Process(src); return result.GetText(); }
4.適当なファイルに書き出してコンパイル・実行する
using (var p = new System.Diagnostics.Process() { StartInfo = { FileName = System.Environment.GetEnvironmentVariable("ComSpec"), UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardInput = true, CreateNoWindow = true, } }) { p.Start(); using (var sw = p.StandardInput) { sw.WriteLine(@"cd {0} /w", Assembly.GetEntryAssembly().Location); sw.WriteLine(@"gcc -std=c99 -o {1} {0}", srcPath, outPath); sw.WriteLine(@"exit"); } var result = p.StandardOutput.ReadToEnd(); }
階乗
次は写真からきれいなソースコードを起こす作業か...寝よ