Tesseract OCR getting an exception

0

I'm trying to use this NuGet Package for OCR:

https://github.com/charlesw/tesseract. After execution, I am getting this error:

System.MissingMethodException
  HResult=0x80131513
  Message=Method not found: 'System.Reflection.Emit.AssemblyBuilder System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)'.
  Source=Tesseract
  StackTrace:
   at InteropDotNet.InteropRuntimeImplementer.CreateInstance[T]()
   at Tesseract.Interop.LeptonicaApi.Initialize()
   at Tesseract.Interop.TessApi.Initialize()
   at Tesseract.Interop.TessApi.get_Native()
   at Tesseract.TesseractEngine..ctor(String datapath, String language, EngineMode engineMode, IEnumerable`1 configFiles, IDictionary`2 initialOptions, Boolean setOnlyNonDebugVariables)
   at Tesseract.TesseractEngine..ctor(String datapath, String language, EngineMode engineMode)
   at WebDriverSelenium.Program.Main(String[] args) in C:\Users\Kingtotsky\source\repos\AutomationPractice\WebDriverSelenium\Program.cs:line 26

I've already added my assembly references for System.Reflection.Emit. tessdata is in the same directory with the Program.cs file. Also installed, Microsoft Visual C++ Redistributable for Visual Studio 2017 (x86 and x64). Still I can't make it work. I'm new to C#. And here is what my code looks like:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Reflection.Emit;
using Tesseract;

namespace WebDriverSelenium
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver webDriver = new ChromeDriver(@"C:\Users\Kingtotsky\source\repos\ChromeDriver");
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            webDriver.Url = "https://www.google.com";
            Screenshot screenshot = ((ITakesScreenshot)webDriver).GetScreenshot();

            screenshot.SaveAsFile("test.png", ScreenshotImageFormat.Png);

            TesseractEngine engine = new TesseractEngine("./tessdata", "eng", EngineMode.Default);
            var ss = Pix.LoadFromFile($@"C:\Users\Kingtotsky\source\repos\AutomationPractice\WebDriverSelenium\bin\Debug\netcoreapp2.1\test.png");
            var page = engine.Process(ss);

            Console.WriteLine(page.GetText());

            //var ocr = new AutoOcr();
            //var result = ocr.Read(@"C:\Users\Kingtotsky\source\repos\AutomationPractice\WebDriverSelenium\bin\Debug\netcoreapp2.1\test.png");
            //Console.WriteLine(result.Text);
            Console.ReadLine();


            webDriver.Close();
            webDriver.Quit();
        }
    }
}

What I'm trying to do is get a screenshot of the webpage and read the text found there. I am stuck on what to do next. Your help is really appreciated. Thank you!

c#
tesseract
asked on Stack Overflow Nov 15, 2018 by K. Supertramp

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0