嗨,你能不能给我一个简单的例子来测试Tesseract OCR,最好是在C#中.
我试过这里的演示.我下载了英文数据集并在C盘中解压缩.并将代码修改如下:
string path = @"C:\pic\mytext.jpg";
Bitmap image = new Bitmap(path);
Tesseract ocr = new Tesseract();
ocr.SetVariable("tessedit_char_whitelist", "0123456789"); // If digit only
ocr.Init(@"C:\tessdata\", "eng", false); // To use correct tessdata
List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty);
foreach (tessnet2.Word word in result)
Console.WriteLine("{0} : {1}", word.Confidence, word.Text);
Run Code Online (Sandbox Code Playgroud)
不幸的是,代码不起作用.程序死于"ocr.Init(..."行.即使使用try-catch,我甚至无法获得异常.
我能够运行vietocr!但这对我来说是一个非常大的项目.我需要一个像上面这样的简单例子.
谢谢
Wil*_*son 19
好.我发现这里的解决方案 tessnet2无法加载 Adam给出的Ans
显然我使用的是错误版本的tessdata.我直观地遵循源页面指令并导致了问题.
它说
快速使用Tessnet2
在这里下载二进制文件,将程序集Tessnet2.dll的引用添加到您的.NET项目中.
下载语言数据定义文件在这里,并把它放在tessdata目录.Tessdata目录和您的exe必须位于同一目录中.
下载二进制文件后,当您按照链接下载语言文件时,有许多语言文件.但它们都不是正确的版本.您需要选择所有版本并转到下一页以获取正确的版本(tesseract-2.00.eng)!他们应该将下载二进制链接更新到版本3,或者将版本2语言文件放在第一页上.或者至少大胆提一下这个版本问题是一个大问题!
无论如何我找到了它.感谢大家.
在C#中测试Tesseract OCR的简单示例:
public static string GetText(Bitmap imgsource)
{
var ocrtext = string.Empty;
using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
{
using (var img = PixConverter.ToPix(imgsource))
{
using (var page = engine.Process(img))
{
ocrtext = page.GetText();
}
}
}
return ocrtext;
}
Run Code Online (Sandbox Code Playgroud)
信息:tessdata文件夹必须存在于存储库中:bin \ Debug \