我正在使用tessearct wrapper for C# v3。所需要的是获得位于图像顶部的12位数字。以下工作,但非常慢(我的电脑上42秒):
public string GetIdentityNumber(string path)
{
string identityNum = string.Empty;
Regex regex = new Regex(@"[\d]{4}\s+[\d]{4}\s+[\d]{4}");
try
{
using (var engine = new TesseractEngine(@".\tessdata", "eng", EngineMode.Default))
{
using (var img = Pix.LoadFromFile(path))
{
using (var page = engine.Process(img, PageSegMode.SingleBlock))
{
using (var iter = page.GetIterator())
{
string text;
Match match;
iter.Begin();
do
{
text = iter.GetText(PageIteratorLevel.TextLine);
match = regex.Match(text);
if (match.Success)
{
identityNum = match.ToString();
break;
}
}
while (iter.Next(PageIteratorLevel.TextLine));
}
}
}
}
}
catch
{
}
return identityNum;
}
执行page.GetIterator()方法大约需要40秒。有谁知道任何改善性能的设置或方法?
答案 0 :(得分:0)
除了将图像(基本上裁剪)限制在您感觉文本将会出现的区域之外,处理的次数也会减少,因此没有太多事情可做。
Tesseract的速度并不出名。