【发布时间】:2019-09-24 18:48:51
【问题描述】:
我使用 Tesseract 和 C# 来读取数字。除了数字“8”之外,一切都很好。 Tesseract 无法读取“8”位。 这是我发送给 tesseract 的图片:
并且 tesseract 读取“50005550055”。 这是我的方法:
public string Process(Bitmap bitmap, MetaTraderObjects metaObjects, bool isNumber = false)
{
try
{
var graphicLib = new GraphicLib();
bitmap = graphicLib.PerformReadingTextEffects(bitmap.ToBytes(), metaObjects).ToBitmap();
var result = "";
var enginePath = Const.BaseAppPath + "\\tessdata";
using (var engine = new TesseractEngine(enginePath, "eng", EngineMode.Default))
{
var ver = engine.Version;
using (var img = Pix.LoadTiffFromMemory(graphicLib.ConvertBitMapToByteArray(bitmap.ToBytes())))
{
using (var page = engine.Process(img,(PageSegMode)8))
{
var text = page.GetText();
result = TextReformer.Reform(text, isNumber);
MemoryStream ms = new MemoryStream(bitmap.ToBytes());
Image i = Image.FromStream(ms);
}
}
}
return result;
}
catch (Exception ex)
{
ExceptionLog.Handel(ex);
return null;
}
}
如何告诉 Tesseract 垂直杆是“8”?
【问题讨论】:
-
您使用的是哪个版本的 Tesseract?
-
自从我使用 Tesseract 以来已经有很长时间了,但我记得必须将图像扩展为双倍宽度和高度以获得更好的结果,而不是与特定字符相关。不确定这是否会有所帮助。
-
@AbdelAzizAbdelLatef 3.3.0.0
-
@juharr 你知道的任何事情都会有帮助!
-
Tesseract 建议至少 300 DPI 以获得最佳效果。以我的经验,200相当不错。你的角色现在大约 8 像素宽; 20 会更好。