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!
User contributions licensed under CC BY-SA 3.0