本文介绍: 最近遇到一个需求:有大量的扫描件需要还原为可编辑的文本,很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的,结果用了几个开源库,效果不理想。后来,用了取巧的方法,直接使用了WX的OCR识别模型,因为发现WX电脑端的OCR识别真是黑科技啊,好用的很!识别率99.9%,并且是本地识别,不需要调用接口。放几张图片看看,中文识别很强!图片里很多干扰因素都自动屏蔽了,厉害!
最近遇到一个需求:有大量的扫描件需要还原为可编辑的文本,很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的,结果用了几个开源库,效果不理想。后来,用了取巧的方法,直接使用了WX的OCR识别模型,因为发现WX电脑端的OCR识别真是黑科技啊,好用的很!识别率99.9%,并且是本地识别,不需要调用接口。放几张图片看看,中文识别很强!图片里很多干扰因素都自动屏蔽了,厉害!
简单用C# + winforms实现了一下:
public class ImageOcr
{
public static void Run(string imagePath, Action<string,WeiOcrResult> callback)
{
string wechatOcrDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"extractedWeChatOCR.exe");
string wechatDir = AppDomain.CurrentDomain.BaseDirectory;
OcrManager? ocrManager = new OcrManager();
var ocrPtr= GCHandle.ToIntPtr(GCHandle.Alloc(ocrManager));
ocrManager = GCHandle.FromIntPtr(ocrPtr).Target as OcrManager;
if (ocrManager != null)
{
ocrManager.SetExePath(wechatOcrDir);
ocrManager.SetUsrLibDir(wechatDir);
ocrManager.SetOcrResultCallback(callback);
ocrManager.StartWeChatOCR(ocrPtr);
ocrManager.DoOCRTask(imagePath);
Thread.Sleep(1000);
while (ocrManager.m_taskIdQueue.Count != OcrManager.OCR_MAX_TASK_ID)
{
// Wait for OCR tasks to complete
Thread.Sleep(100);
}
ocrManager.KillWeChatOCR();
}
}
}
参考链接:https://www.cnblogs.com/slmk/p/18011420
原文地址:https://blog.csdn.net/huajian2008/article/details/136074771
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_67933.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。