在 C# 中使用 IronOCR 进行光学字符识别
Optical Character Recognition using IronOCR in C#
我正在学习 OCR 并尝试从背景不断变化的图像中读取一些文本。
我正在使用位图截取屏幕截图,然后将其提供给 IronOCR 以识别图像中的字符。
// Selecting the area where I capture the image
Rectangle rectangle = new Rectangle();
rectangle.X = 830;
rectangle.Y = 980;
rectangle.Width = 270;
rectangle.Height = 100;
Rectangle bounds = rectangle;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
bitmap.SetResolution(500, 500);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
// Save the image
bitmap.Save(@"testimages.tiff", ImageFormat.Tiff);
}
// Reading the characters
var Ocr = new IronTesseract();
using (var Input = new OcrInput(@"testimages.tiff"))
{
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
图像是这样的:
IMAGE
图片的背景有点变化,但文字保持不变。可以将文本修改为更具可读性的字符(例如,我可以将其更改为“X X X X X X X X X X”,而不是“--SOME TEXT HERE --”)。关于如何改进我的 OCR 有什么想法吗?
我的问题是如何在代码中改进这一点以使 OCR 更加可靠,捕获图像过程中是否有任何可以改进我的结果的东西?
最终,我的目标是至少以 95% 的准确率唯一地确定这是出现的文本。
如果我 运行 这 5 次这些是输出:
尝试 1:
) 3-'§0ME'TEXT;}TERE --;
P LW hl
尝试 2:
:SRR TS
o ' A \
尝试 3:
L;.,Q{SOMEYEXT (]3]
太
尝试 4:
'GEE UG
尝试 5:
N TR
- 2PV N f
如果有人对此有疑问,对我有帮助的是 Input.Invert() 反转每种颜色。例如。白色变成黑色。黑色变成白色。这显着改善了我的结果。
using (var Input = new OcrInput(@"testimages\image1.tiff"))
{
Input.EnhanceResolution();
Input.Contrast();
Input.Invert();
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
我正在学习 OCR 并尝试从背景不断变化的图像中读取一些文本。
我正在使用位图截取屏幕截图,然后将其提供给 IronOCR 以识别图像中的字符。
// Selecting the area where I capture the image
Rectangle rectangle = new Rectangle();
rectangle.X = 830;
rectangle.Y = 980;
rectangle.Width = 270;
rectangle.Height = 100;
Rectangle bounds = rectangle;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
bitmap.SetResolution(500, 500);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
}
// Save the image
bitmap.Save(@"testimages.tiff", ImageFormat.Tiff);
}
// Reading the characters
var Ocr = new IronTesseract();
using (var Input = new OcrInput(@"testimages.tiff"))
{
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
图像是这样的: IMAGE
图片的背景有点变化,但文字保持不变。可以将文本修改为更具可读性的字符(例如,我可以将其更改为“X X X X X X X X X X”,而不是“--SOME TEXT HERE --”)。关于如何改进我的 OCR 有什么想法吗?
我的问题是如何在代码中改进这一点以使 OCR 更加可靠,捕获图像过程中是否有任何可以改进我的结果的东西?
最终,我的目标是至少以 95% 的准确率唯一地确定这是出现的文本。
如果我 运行 这 5 次这些是输出:
尝试 1:
) 3-'§0ME'TEXT;}TERE --;
P LW hl
尝试 2:
:SRR TS o ' A \
尝试 3:
L;.,Q{SOMEYEXT (]3]
太
尝试 4:
'GEE UG
尝试 5:
N TR
- 2PV N f
如果有人对此有疑问,对我有帮助的是 Input.Invert() 反转每种颜色。例如。白色变成黑色。黑色变成白色。这显着改善了我的结果。
using (var Input = new OcrInput(@"testimages\image1.tiff"))
{
Input.EnhanceResolution();
Input.Contrast();
Input.Invert();
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}