Nicomsoft OCR调用示例(NSOCR)
By
admin
at 2021-03-07 • 0人收藏 • 1590人看过
NISOFT OCR SDK 是一款目前免费图文识别开发库, 目前支持28国语言包括简体和繁体中文识别, 能够识别条形码/二维码,
图片支持: BMP, JPEG, PNG, TIFF, and GIF. 当然也支持内存图片识别.
识别出的结果可以保存成PDF, PDF/A (PDF/A-1a or PDF/A-1b), RTF, Text or XML
详情请看官方:https://www.nicomsoft.com/products/ocr/features/
我这里测试中文识别, 准确率堪忧!
测试英文识别, 准确率不错!
免费注册码: AB2A4DD5FF2A
相关dll和帮助文档:
链接:https://pan.baidu.com/s/1BvgNmLwqR3NR2QJFD-RnkQ
提取码:v9wq
这个OCR有两种调用方式, 一种是com组件形式, 一种是dll直接引用.
如果用com组件形式, 需要regsvr32 NSOCR.dll 注册下.
com组件形式简单测试代码:
import win.ui; /*DSG{{*/ mainForm = win.form(text="NSOCR - aardio示例";right=796;bottom=406) mainForm.add( button={cls="button";text="加载图片并识别";left=0;top=16;right=171;bottom=46;dl=1;dt=1;z=1}; edit={cls="edit";left=400;top=54;right=797;bottom=406;border=1;db=1;dl=0.5;dr=1;dt=1;multiline=1;z=2}; plus={cls="plus";left=0;top=54;right=397;bottom=406;border={color=-16777216;width=1};db=1;dl=1;dr=0.5;dt=1;repeat="scale";z=3}; progress={cls="progress";left=179;top=17;right=793;bottom=45;dl=1;dr=1;dt=1;edge=1;max=100;min=0;z=4} ) /*}}*/ import fsys.dlg; import win.timer var timer = win.timer( mainForm ); timer.setInterval(20); thread.set("successFlag", false); var NsOCR = com.CreateObject("NSOCRLib.NSOCR.1"); var ret = NsOCR.Engine_SetLicenseKey("AB2A4DD5FF2A"); ret = NsOCR.Engine_Initialize(); ret,CfgObj = NsOCR.Cfg_Create(); ret = NsOCR.Cfg_LoadOptions(CfgObj, "Config.dat"); ret,OcrObj = NsOCR.Ocr_Create(CfgObj); ret,ImgObj = NsOCR.Img_Create(OcrObj); mainForm.button.oncommand = function(id,event){ mainForm.progress.pos = 0; thread.set("successFlag", false); var path = fsys.dlg.open("图像文件|*.png;*.bmp;*.jpg;*.tiff;*.gif","请选择图像文件"); if(!#path) return; mainForm.plus.setBackground(path,false); var ret = NsOCR.Img_LoadFile(ImgObj, path); if(ret>0){ mainForm.msgboxErr("Err"); }else { ret = NsOCR.Img_OCR(ImgObj, 0, 255, 1); timer.enable(); win.invoke( function(){ while(!thread.get("successFlag")){}; } ) ret,txt = NsOCR.Img_GetImgText(ImgObj, 0); mainForm.edit.text = txt; } } timer.onTimer = function(hwnd,msg,id,tick){ var val = NsOCR.Img_OCR(ImgObj, 0, 0, 3); if(mainForm.progress.pos!=val){ mainForm.progress.pos = val; if(val>=100){ timer.disable(); thread.set("successFlag", true); } } } mainForm.onClose = function(hwnd,message,wParam,lParam){ NsOCR.Img_Destroy(ImgObj); NsOCR.Ocr_Destroy(OcrObj); NsOCR.Cfg_Destroy(CfgObj); } mainForm.show(); return win.loopMessage();
登录后方可回帖