C#调用WechatOCR.exe实现本地OCR文字识别
最近遇到一个需求:有大量的扫描件需要还原为可编辑的文本,很显然需要用到图片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 complete
Thread.Sleep(100);
}
ocrManager.KillWeChatOCR();
}
}
}
获取全部源代码
参考链接:https://www.cnblogs.com/slmk/p/18011420