最近遇到一个需求:有大量的扫描件需要还原为可编辑的文本,很显然需要用到图片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, @"extracted\WeChatOCR.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 completeThread.Sleep(100);}ocrManager.KillWeChatOCR();}}
}
获取全部源代码
参考链接:https://www.cnblogs.com/slmk/p/18011420