Kernel Memory 中使用 PaddleSharp OCR
2024/1/8 14:03:09
本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享