【发布时间】:2021-08-06 23:16:45
【问题描述】:
我有一些 PNG 文件,其中包含黑色(戴维灰色)和浅棕色(蘑菇色)两种不同颜色的多个句子。
我只对黑色文本感兴趣,所以我尝试使用 Input.ReplaceColor 将浅棕色文本的颜色更改为背景颜色,但这种颜色有很多阴影,结果我总是会得到一些奇怪的字符剩下的小残留物。
这是我的实际代码
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
var ContentArea = new Rectangle() { X = 872 , Y = 130, Height = 900, Width = 725 };
Input.AddImage(@"C:\OCR\Capture (" + i + ").PNG", ContentArea);
Input.ReplaceColor(Color.FromArgb(185, 163, 143), Color.FromArgb(235, 226, 216), 25);
Input.Sharpen();
Input.ToGrayScale();
var Result = Ocr.Read(Input);
richTextBox1.AppendText(Result.Text + Environment.NewLine);
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
}
编辑:目前的答案是“否”,希望他们将来会发布此功能。
目前唯一的选择是使用颜色,直到找到最佳参数。
如果您有比 IronOCR 更好且免费的替代品(即使仅适用于开发人员),我很乐意接受。
【问题讨论】:
-
尝试用纯白色替换背景,在
OcrInput.ReplaceColor()上使用tolerance参数,也许使用相同的方法将灰色文本变为黑色。Sharpen()实际上可能会通过使微弱的瑕疵变暗而对您不利。底线:这里可能没有明确的通用答案,只是对您的图像进行试错微调。 -
谢谢,黑白技术给了我更好的结果,但删除
Sharpen()给我的结果更差(从一个字符到每行 20 个奇怪的字符),我尝试了很多容忍度,但是如果我输入更高的值,我最终也会弄乱黑色文本。