Kernel Memory 中使用 PaddleSharp OCR
生活随笔
收集整理的這篇文章主要介紹了
Kernel Memory 中使用 PaddleSharp OCR
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Kernel Memory 中使用 PaddleSharp OCR
Kernel Memory 中進行文檔處理的時候可以上傳圖片作為文檔,這時候就需要使用到 OCR 技術來識別圖片中的文字。
官方默認的庫中,提供了 Azure Document Intelligence 的擴展服務,可以通過 Azure 的服務來進行 OCR。
方法也非常簡單,只需要在構建 Kernel Memory 的時候,調用 WithAzureAIDocIntel 方法,提供相應的參數即可。
var _ = new KernelMemoryBuilder(appBuilder.Services)
//...
.WithAzureAIDocIntel(new AzureAIDocIntelConfig()) // <- register azure document intelligence
.Build();
如果沒有Azure 服務的話,也可以使用自定義的 OCR 服務,例如 PaddleSharp OCR。
實現自定義的 OCR 服務,需要實現 IOcrEngine 接口,該接口的定義相對比較簡單,其中只有一個ExtractTextFromImageAsync方法。
public interface IOcrEngine
{
Task<string> ExtractTextFromImageAsync(Stream imageContent, CancellationToken cancellationToken = default(CancellationToken));
}
使用 PaddleSharp 我們需要安裝以下 Nuget 包:
Sdcb.PaddleInference
Sdcb.PaddleOCR
Sdcb.PaddleInference.runtime.win64.mkl
OpenCvSharp4.runtime.win
Sdcb.PaddleOCR.Models.Local
然后實現 IOcrEngine 接口:
public class PaddleSharpOcrEngine(FullOcrModel model) : IOcrEngine
{
private readonly FullOcrModel _model = model;
public async Task<string> ExtractTextFromImageAsync(Stream imageContent, CancellationToken cancellationToken = default)
{
using var all = new PaddleOcrAll(_model, PaddleDevice.Mkldnn());
using var memoryStream = new MemoryStream();
await imageContent.CopyToAsync(memoryStream);
using Mat src = Cv2.ImDecode(memoryStream.ToArray(), ImreadModes.Color);
PaddleOcrResult result = all.Run(src);
return result.Text;
}
}
在構建 Kernel Memory 的時候,注冊自定義的 OCR 服務:
var model = LocalFullModels.EnglishV3;
var memory = new KernelMemoryBuilder(appBuilder.Services)
//...
.AddSingleton<IOcrEngine>(new PaddleSharpOcrEngine(model))// <- register paddle ocr
.Build();
注冊完成之后,后續處理圖片文件的過程中,就會自動調用 PaddleSharp OCR 服務了。
await memory.ImportDocumentAsync("./kernel_memory_readme.png");
var question = "What's Kernel Memory?";
var answer = await memory.AskAsync(question);
Console.WriteLine($"Q: {question}");
Console.WriteLine($"A: {answer.Result}");
以上代碼實現已經上傳至 GitHub.
參考
- PaddleSharp Ocr
總結
以上是生活随笔為你收集整理的Kernel Memory 中使用 PaddleSharp OCR的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员创业该做什么产品?
- 下一篇: #11独立开发周总结|核心OKR1000