Тессеракт OCR получает исключение - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь использовать этот пакет NuGet для распознавания текста:

https://github.com/charlesw/tesseract. После выполнения я получаю эту ошибку:

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

Я уже добавилмои сборочные ссылки для System.Reflection.Emit.tessdata находится в том же каталоге, что и файл Program.cs.Также установлен распространяемый Microsoft Visual C ++ для Visual Studio 2017 (x86 и x64).Тем не менее я не могу заставить это работать.Я новичок в C #.Вот как выглядит мой код:

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();
        }
    }
}

Я пытаюсь сделать скриншот веб-страницы и прочитать найденный там текст.Я застрял на том, что делать дальше.Ваша помощь очень ценится.Спасибо!

...