3

私はいくつかの簡単なOCRタスクを実行しようとしていますが、まだ無料のライブラリを探しています。誰もがtesseractを使用しているようですが、C#またはVB.NETでtesseractengine3.dllを使用する簡単で実用的な例を教えてもらえますか?数時間検索した後、VS2010および.Net4でコンパイルされるドキュメントや例を見つけることができません。

4

3 に答える 3

1

http://vietocr.sourceforge.net/素晴らしいオープンソースOCRで使用されているhttps://github.com/charlesw/tesseractライブラリを使用してみてください。簡単な例として、ライブラリのソースコードでBaseApiTesterプロジェクトを見てください。

于 2013-03-12T13:14:32.370 に答える
1

これを試して

    Ocr ocr = new Ocr();
    private void button1_Click(object sender, EventArgs e)
    {


         using (Bitmap bmp = new Bitmap(@"C:\OCR\ocr-test.jpg"))
        {
            tessnet2.Tesseract tessocr = new tessnet2.Tesseract();
            tessocr.Init(null, "eng", false);
            tessocr.GetThresholdedImage(bmp, Rectangle.Empty).Save("c:\\temp\\" + Guid.NewGuid().ToString() + ".bmp");
            // Tessdata directory must be in the directory than this exe
            Console.WriteLine("Multithread version");
            ocr.DoOCRMultiThred(bmp, "eng");
            Console.WriteLine("Normal version");
            ocr.DoOCRNormal(bmp, "eng");
        }
    }
   public class Ocr
    {
        public void DumpResult(List<tessnet2.Word> result)
        {
            foreach (tessnet2.Word word in result)
                Console.WriteLine("{0} : {1}", word.Confidence, word.Text);
        }

        public List<tessnet2.Word> DoOCRNormal(Bitmap image, string lang)
        {
            tessnet2.Tesseract ocr = new tessnet2.Tesseract();
            ocr.Init(null, lang, false);
            List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);
            DumpResult(result);
            return result;
        }

        ManualResetEvent m_event;

        public void DoOCRMultiThred(Bitmap image, string lang)
        {
            tessnet2.Tesseract ocr = new tessnet2.Tesseract();
            ocr.Init(null, lang, false);
            // If the OcrDone delegate is not null then this'll be the multithreaded version
            ocr.OcrDone = new tessnet2.Tesseract.OcrDoneHandler(Finished);
            // For event to work, must use the multithreaded version
            ocr.ProgressEvent += new tessnet2.Tesseract.ProgressHandler(ocr_ProgressEvent);
            m_event = new ManualResetEvent(false);
            ocr.DoOCR(image, Rectangle.Empty);
            // Wait here it's finished
            m_event.WaitOne();
        }

        public void Finished(List<tessnet2.Word> result)
        {
            DumpResult(result);
            m_event.Set();
        }

        void ocr_ProgressEvent(int percent)
        {
            Console.WriteLine("{0}% progression", percent);
        }
    }
于 2013-03-12T11:52:54.730 に答える
0

Tesseract 3.01 用の .NET ラッパーがあります: tesseract-ocr-dotnet

于 2012-07-30T23:53:38.663 に答える