C#利用OCR实现车牌识别(包含模型及源码)
ocr技术已经非常成熟了,C#的免费的OCR库有 PaddleOCRSharp、Halcon、Tesseract、RapidOCR及EasyOCR等,尝试过Tesseract及PaddleOCRSharp,发现Tesseract效果比较差,偶尔还出现无法识别,而PaddleOCRSharp识别速度慢且会输出公司的信息,满满的套路,如下图:

本文利用RapidOCR.Net实现车牌识别,识别效果相对来说好及速度还可以,但有个很坑的地方是,写类库的作者并没有提供模型,一运行就会报缺失模型文件的错误,在网上找了好久,终于让我给找到了,下载链接如下:
https://github.com/hiroi-sora/RapidOCR-json/releases/tag/v0.2.0
或
https://github.com/RapidAI/RapidOCR/blob/main/python/rapidocr/default_models.yaml
然后找到对应的下载链接下载即可:

链接失效或无法下载还可以从我这里下载,包含本文的源码及模型文件:
https://download.csdn.net/download/zxy13826134783/92520829(vip资源,需要请联系我)
本文测试环境:
visual studio 2022
.net8
测试步骤如下:
1 新建.net8的控制台项目,名为OCRDemo4
2 nuget包管理中搜索RapidOCR.Net,选择版本0.0.2,如下图:

要选择第一个,不要选择第二个RapidOcrNet(这边识别度很低,连简单的文本都能识别错)
3 下载模型文件ch_PP-OCRv3_det_infer.onnx、ch_ppocr_mobile_v2.0_cls_infer.onnx、ch_PP-OCRv3_rec_infer.onnx及dict_chinese.txt,并放到bin\Debug\net8.0的目录models(自己新建)
4 准备当前示例要识别的图片:
名为car3.png的图片:

名为test_ocr.png的图片:

5 编写代码如下:
using RapidOcrNet;
using SkiaSharp;
using (var ocrEngin = new RapidOcr())
{
string detPath = Path.Combine("models", "ch_PP-OCRv3_det_infer.onnx");
string clsPath = Path.Combine("models", "ch_ppocr_mobile_v2.0_cls_infer.onnx");
string recPath = Path.Combine("models", "ch_PP-OCRv3_rec_infer.onnx");
string keysPath = Path.Combine("models", "dict_chinese.txt");
ocrEngin.InitModels(detPath, clsPath, recPath, keysPath, 0);
using (SKBitmap originSrc = SKBitmap.Decode("car3.png"))
{
OcrResult ocrResult = ocrEngin.Detect(originSrc, RapidOcrOptions.Default);
Console.WriteLine($"识别结果:{ocrResult.StrRes}");
}
using (SKBitmap originSrc = SKBitmap.Decode("test_ocr.png"))
{
OcrResult ocrResult = ocrEngin.Detect(originSrc, RapidOcrOptions.Default);
Console.WriteLine($"识别结果2:{ocrResult.StrRes}");
}
Console.ReadLine();
}
6 运行结果如下:

好了,本文的内容到此结束
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)