我使用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);
}
但是我得到了那个虚拟文字:
所以我试图重新缩放该图像
bitmapScreen.SetResolution(300, 300);
但结果是相同的
答案 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质量更好。