大家有使用過.NET開發過OCR工具嗎?今天給大家推薦一個基於百度飛槳封裝的.NET版本OCR工具類庫:PaddleOCRSharp。
PaddleOCRSharp 是一個基於百度飛槳PaddleOCR的.NET版本OCR工具類庫。專案核心元件PaddleOCR.dll,由C++編寫,根據百度飛槳PaddleOCR的C++程式碼修改並優化而成。目前已經支援C++、.NET、Python、Golang、Rust等開發語言的直接API介面呼叫。專案包含文字識別、文字檢測、表格識別功能。本專案針對小圖識別不準的情況下做了優化,比飛槳原始碼識別準確率有所提高。包含總模型僅8.6M的超輕量級中文OCR,單模型支援中英文數位組合識別、豎排文字識別、長文字識別。同時支援中英文、純英文以及多種語言文字檢測識別。
OCR(Optical Character Recognition)工具可以將影象或掃描檔案中的文字內容轉換成可編輯的文字格式。這項技術可以幫助人們快速準確地將掃描檔案、圖片中的文字提取出來,從而進行編輯、儲存和分析。
PaddleOCR旨在打造一套豐富、領先、且實用的OCR工具庫,助力開發者訓練出更好的模型,並應用落地。
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;net8.0
注意該範例專案只支援X64位元程式。
注意:如果因框架編譯問題無法編譯,請修改PaddleOCRSharp\PaddleOCRSharp.csproj檔案【或雙擊專案】,刪除當前電腦環境沒有的框架,只保留你想要的.NET框架。
<TargetFrameworks>
net35;net40;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;
netstandard2.0;netcoreapp3.1;
net5.0;net6.0;net7.0;net8.0
</TargetFrameworks>
如我的本地環境沒有安裝.net8,那就刪除對應版本即可。
OCR識別模型庫支援官方所有的模型,也支援自己訓練的模型。完全按照飛槳OCR介面搭橋。本專案部署自帶的一種輕量版8.6M模型庫、伺服器版模型庫(更準確,需要自行下載),可以自行更改模型庫適用實際需求。
或者複製原始碼對應位置paddle-ocrsharp-dev\paddle-ocrsharp-dev\PaddleOCRSharp\PaddleOCRLib\inference
下面的模型到專案輸出目錄中:
/// <summary>
/// PaddleOCR識別引擎物件初始化
/// </summary>
/// <param name="config">模型設定物件,如果為空則按預設值</param>
/// <param name="parameter">識別引數,為空均按預設值</param>
public PaddleOCREngine(OCRModelConfig config, OCRParameter parameter = null) : base()
{
CheckEnvironment();
if (parameter == null) parameter = new OCRParameter();
if (config == null)
{
string root= GetRootDirectory();
config = new OCRModelConfig();
string modelPathroot = root + @"\inference";
config.det_infer = modelPathroot + @"\ch_PP-OCRv4_det_infer";
config.cls_infer = modelPathroot + @"\ch_ppocr_mobile_v2.0_cls_infer";
config.rec_infer = modelPathroot + @"\ch_PP-OCRv4_rec_infer";
config.keys = modelPathroot + @"\ppocr_keys.txt";
}
if (!Directory.Exists(config.det_infer)) throw new DirectoryNotFoundException(config.det_infer);
if (!Directory.Exists(config.cls_infer)) throw new DirectoryNotFoundException(config.cls_infer);
if (!Directory.Exists(config.rec_infer)) throw new DirectoryNotFoundException(config.rec_infer);
if (!File.Exists(config.keys)) throw new FileNotFoundException(config.keys);
Initialize(config.det_infer, config.cls_infer, config.rec_infer, config.keys, parameter);
}
將下面的dll複製到對應的輸出目錄中:
|--libiomp5md.dll //第三方參照庫
|--mkldnn.dll //第三方參照庫
|--mklml.dll //第三方參照庫
|--opencv_world470.dll //第三方參照庫
|--paddle_inference.dll //飛槳庫
|--PaddleOCR.dll
本專案依賴VC++2017X64執行庫,請檢查機器上是否安裝VC++依賴庫。2.0.4及以上版本,免安裝VC++2017X64執行庫
更多專案實用功能和特性歡迎前往專案開源地址檢視