从截图中读取文字

时间:2017-06-22 08:38:37

标签: c# selenium tesseract

我使用selenium访问x网站并截屏

public static void TakeScreenshot(IWebDriver driver, int x, int y, int width, int height)
    {
         var name =
            $@"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}\{"screenshots"}\{Guid.NewGuid()}.{
                ScreenshotImageFormat.Png
            }";

        Rectangle rect = new Rectangle(x, y, width, height);

        Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
        var bitmapScreen = new Bitmap(new MemoryStream(screenshot.AsByteArray));
        var croppedArea = new Rectangle(rect.Location, rect.Size);

        bitmapScreen.Clone(croppedArea, bitmapScreen.PixelFormat).Save(name);
    }

保存后我尝试使用http://example.com/serialnumbervalidate.php?key=somekey

从该图片中读取文字
var testImagePath = @".\Content\300.png";
var dataPath = @".\tessdata";

        try
        {
            using (var tEngine = new TesseractEngine(dataPath, "eng", EngineMode.Default)) //creating the tesseract OCR engine with English as the language
            {
                using (var img = Pix.LoadFromFile(testImagePath)) // Load of the image file from the Pix object which is a wrapper for Leptonica PIX structure
                {
                    using (var page = tEngine.Process(img)) //process the specified image
                    {
                        var text = page.GetText(); //Gets the image's content as plain text.
                        Console.WriteLine(text); //display the text
                        Console.WriteLine(page.GetMeanConfidence()); //Get's the mean confidence that as a percentage of the recognized text.
                        Console.ReadLine();
                    }
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Unexpected Error: " + e.Message);
        }

但是我得到了那个虚拟文字:

tesseract

所以我试图重新缩放该图像

bitmapScreen.SetResolution(300, 300);

我发现enter image description here

但结果是相同的

1 个答案:

答案 0 :(得分:0)

您可以使用在线ocr(例如免费ocr.space和易于使用的GET API)或Google Cloud愿景,而不是tesseract。这些在线工具的OCR质量远远优于Tesseract。

或者使用内置OCR的网络测试工具。

  是的,因为它是flash网页。

啊,我刚刚在几分钟前回答了你的另一个问题;)

为了别人的利益只读这个答案。对于Flash testing,我个人使用Kantu。它是一款免费的基于Chromium的工具,内置OCR和图像识别功能。

PS:我用OCR.space测试了你的i.stack.imgur.com/T46V2.png图像,OCR结果看起来不错。 Google Cloud的OCR质量更好。