在 Visual Studio 中打开包管理器控制台,运行:
Install-Package Tesseract -Version 5.2.0
Install-Package OpenCvSharp4 -Version 4.8.0.20230708
Install-Package OpenCvSharp4.runtime.win -Version 4.8.0.20230708
或者通过 NuGet 包管理器界面搜索并安装。
下载需要的语言文件:
在项目目录下创建 tessdata 文件夹,将下载的文件放入
using OCRTest;
// 最简单的使用方式
var engine = OCREngine.Instance;
var result = engine.RecognizeText("your_image.png");
Console.WriteLine($"识别结果:{result.Text}");
Console.WriteLine($"置信度:{result.Confidence}%");
Console.WriteLine($"耗时:{result.ElapsedMilliseconds}ms");
运行项目中的 Program.cs,选择选项 1 测试各种识别功能。
var config = new OCRConfig
{
Language = "eng",
EngineMode = EngineMode.LstmOnly, // 最快模式
EnablePreprocessing = true
};
var engine = OCREngine.GetInstance(config);
var result = engine.RecognizeText("image.png");
var engine = OCREngine.GetInstance("chi_sim"); // 简体中文
var result = engine.RecognizeText("chinese_image.png");
var config = new OCRConfig
{
Language = "eng",
Whitelist = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-",
EnablePreprocessing = true
};
var engine = OCREngine.GetInstance(config);
var result = engine.RecognizeText("serial_number.png");
string[] images = Directory.GetFiles("images", "*.png");
var engine = OCREngine.Instance;
foreach (var image in images)
{
var result = engine.RecognizeText(image);
Console.WriteLine($"{Path.GetFileName(image)}: {result.Text}");
}
// 假设你已经有了 Bitmap 对象
using (var bitmap = GetScreenshot()) // 你的截图方法
{
var engine = OCREngine.Instance;
var result = engine.RecognizeFromBitmap(bitmap);
Console.WriteLine(result.Text);
}
| 参数 | 说明 | 推荐值 |
|---|---|---|
| Language | 识别语言 | "eng", "chi_sim", "chi_sim+eng" |
| EngineMode | 引擎模式 | LstmOnly(快), Default(平衡) |
| Whitelist | 字符白名单 | 根据实际需求设置 |
| EnablePreprocessing | 图像预处理 | true(推荐) |
| PageSegMode | 页面分割模式 | Auto(默认) |
EngineMode = EngineMode.LstmOnly
Whitelist = "0123456789" // 仅数字
// ✅ 好:复用实例
var engine = OCREngine.Instance;
for (int i = 0; i < 100; i++)
{
engine.RecognizeText($"image{i}.png");
}
// ❌ 差:频繁创建
for (int i = 0; i < 100; i++)
{
using (var engine = new TesseractEngine(...))
{
// ...
}
}
// 使用 OpenCvSharp 裁剪感兴趣区域
using (var src = Cv2.ImRead("image.png"))
{
var roi = new Rect(100, 100, 200, 50); // x, y, width, height
using (var cropped = new Mat(src, roi))
{
var result = engine.RecognizeFromBitmap(cropped.ToBitmap());
}
}
收集 100-500 张代表性图片,覆盖所有需要识别的字符。
OCRTrainingHelper.CreateSampleProject(@"D:\MyOCRProject");
OCRTrainingHelper.PreprocessTrainingImages(
@"D:\MyOCRProject\raw_images",
@"D:\MyOCRProject\processed_images",
targetWidth: 800
);
为每张图片创建对应的 .txt 文件,内容为识别文本。
OCRTrainingHelper.ValidateDataset(@"D:\MyOCRProject\processed_images");
OCRTrainingHelper.GenerateTrainingScript(
"myfont",
@"D:\MyOCRProject\train.bat"
);
双击运行 train.bat,等待训练完成。
将生成的 myfont.traineddata 放入 tessdata 文件夹:
var engine = OCREngine.GetInstance("myfont");
var result = engine.RecognizeText("test.png");
详细训练指南请查看 README.md
检查清单:
chi_sim 或 chi_sim+eng 语言EngineMode.LstmOnly定期清理:
OCREngine.Cleanup();
祝你使用愉快! 🎉