概述
PaddleOCR 是由百度飛槳(PaddlePaddle)深度學習平臺開發的多語言 OCR 工具庫,支持80多種語言的文本識別,并提供數據標注、文本圖像矯正、版面區域檢測、表格識別等功能。本文將詳細介紹如何在 C# 項目中使用 PaddleOCR 進行圖片文字識別,并附上示例代碼。
環境配置
1. 準備開發環境
- 操作系統:Windows 或 Linux(如 Ubuntu、CentOS)
- 開發工具:Visual Studio 2022 或 Rider
2. 安裝 PaddleOCRSharp
在你的項目中,使用以下命令安裝 PaddleOCRSharp NuGet 包:
dotnet add package PaddleOCRSharp
或者通過 Visual Studio 的 NuGet 管理器搜索 PaddleOCRSharp
并安裝。
3. 下載模型文件
PaddleOCR 需要預訓練模型文件來完成 OCR 任務。可以通過以下步驟獲取:
- 訪問 PaddleOCR 的官方 GitHub 倉庫:PaddleOCR GitHub。
- 下載適合自己需求的模型文件(如
ch_PP-OCRv3
用于中文簡體 OCR)。 - 將模型文件存放到項目目錄中,例如
models/ocr_det_infer
和 models/ocr_rec_infer
。
代碼實現
1. 創建 OCR 實例
PaddleOCRSharp 的核心類是 PaddleOCREngine
,它需要模型路徑和運行配置。
using PaddleOCRSharp;
public class OCRDemo
{
private PaddleOCREngine _ocrEngine;
public OCRDemo()
{
// 設置模型路徑
string detModelPath = @"models/ocr_det_infer";
string recModelPath = @"models/ocr_rec_infer";
string keysPath = @"models/ppocr_keys.txt";
// 初始化 OCR 引擎
_ocrEngine = new PaddleOCREngine(
detModelPath: detModelPath,
recModelPath: recModelPath,
keysPath: keysPath,
useGpu: false // 是否使用 GPU
);
}
}
2. 進行 OCR 識別
PaddleOCREngine
提供了 DetectAndRecognize
方法,可以對圖像文件中的文本進行檢測和識別。
using System;
using System.Drawing;
public class OCRDemo
{
private PaddleOCREngine _ocrEngine;
public OCRDemo()
{
string detModelPath = @"models/ocr_det_infer";
string recModelPath = @"models/ocr_rec_infer";
string keysPath = @"models/ppocr_keys.txt";
_ocrEngine = new PaddleOCREngine(detModelPath, recModelPath, keysPath, useGpu: false);
}
public void RecognizeText(string imagePath)
{
using (Bitmap bitmap = new Bitmap(imagePath))
{
// 調用 OCR 引擎進行識別
var results = _ocrEngine.DetectAndRecognize(bitmap);
// 輸出識別結果
foreach (var result in results)
{
Console.WriteLine($"Text: {result.Text}, Confidence: {result.Score}");
}
}
}
}
3. 主程序調用
創建一個簡單的控制臺應用程序調用以上代碼:
class Program
{
static void Main(string[] args)
{
var ocrDemo = new OCRDemo();
Console.WriteLine("請輸入待識別圖像的路徑:");
string imagePath = Console.ReadLine();
ocrDemo.RecognizeText(imagePath);
}
}
結論
通過上述步驟,我們可以在 C# 項目中輕松集成 PaddleOCR,實現對圖片中文字的識別。PaddleOCRSharp 提供了一種簡便的方法來利用 PaddlePaddle 的強大功能,使得開發者能夠快速地在 C# 環境中應用深度學習進行文字識別。
閱讀原文:原文鏈接
該文章在 2024/12/30 14:34:10 編輯過