Kernel Memory 中使用 PaddleSharp OCR
Kernel Memory 中进行文档处理的时候可以上传图片作为文档,这时候就需要使用到 OCR 技术来识别图片中的文字。
官方默认的库中,提供了 Azure Document Intelligence 的扩展服务,可以通过 Azure 的服务来进行 OCR。
方法也非常简单,只需要在构建 Kernel Memory 的时候,调用 WithAzureAIDocIntel
方法,提供相应的参数即可。
var _ = new KernelMemoryBuilder(appBuilder.Services)
//...
.WithAzureAIDocIntel(new AzureAIDocIntelConfig()) //
如果没有Azure 服务的话,也可以使用自定义的 OCR 服务,例如 PaddleSharp OCR。
实现自定义的 OCR 服务,需要实现 IOcrEngine
接口,该接口的定义相对比较简单,其中只有一个ExtractTextFromImageAsync
方法。
public interface IOcrEngine
{
Task ExtractTextFromImageAsync(Stream imageContent, CancellationToken cancellationToken = default(CancellationToken));
}
使用 PaddleSh服务器托管网arp 我们需要安装以下 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 ExtractTextFromImageAsync(Stream imageContent, CancellationToken cancellationToke服务器托管网n = 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(new PaddleSharpOcrEngine(model))//
注册完成之后,后续处理图片文件的过程中,就会自动调用 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
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
Linux下PCI设备驱动开发详解(五) 本章及其以后的几章,我们将从用户态软件、内核态驱动、FPGA逻辑介绍一个通过PCI Express总线实现CPU和FPGA数据通信的简单框架。 这个框架就是开源界非常有名的RIFFA(reuseable integra…