# aardio 范例: 简单 OCR 代码生成器

```aardio
//简单 OCR 生成器
import win.ui;
/*DSG{{*/
var winform = win.form(text="简单 OCR 代码生成器";right=562;bottom=584)
winform.add(
btnNext={cls="button";text="获取下一个图像";left=390;top=144;right=548;bottom=180;dr=1;dt=1;z=7};
editDict={cls="edit";left=12;top=238;right=548;bottom=571;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=4};
editText={cls="edit";left=151;top=145;right=362;bottom=177;dr=1;dt=1;edge=1;z=5};
editUrl={cls="edit";left=149;top=11;right=548;bottom=41;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1};
plusImage={cls="plus";left=148;top=64;right=382;bottom=128;dr=1;dt=1;repeat="scale";z=3};
static={cls="static";text="图像下载网址：";left=20;top=15;right=144;bottom=39;align="right";dt=1;transparent=1;z=2};
static2={cls="static";text="输入图像上的文本:";left=16;top=149;right=142;bottom=172;align="right";dr=1;dt=1;transparent=1;z=6};
static3={cls="static";text="字库与识别代码：";left=23;top=206;right=488;bottom=244;transparent=1;z=8}
)
/*}}*/

/*
这是一个不需要第三方组件的简单 OCR 实现，仅适用于识别规则数字。
简单 OCR 范例: https://www.aardio.com/zh-cn/doc/example/Automation/ComputerVision/soImage.ocr.example.html

相关推荐：
免费 OCR API: https://www.aardio.com/zh-cn/doc/example/Automation/ComputerVision/ocr.space.html
*/

import soImage;
import inet.http;
import util.table;

var imageDict = {};
var imageData; 
winform.btnNext.oncommand = function(id,event){
	if(#imageData){
		var text = winform.editText.text;
		if(#text != #imageData ){
			winform.editText.showErrorTip("必须输入图像上的"+#imageData +"个字符");
			return;
		}
		
		for(i=1;#imageData;1){
			imageDict[ text[[i]] ] = imageData[i];
		}
		
		import string.template;
		var strCode = string.template();
		strCode.template = /***
//字库
var dict = ${dict}

import win.ui;
/*DSG{{*/
var winform = win.form(text="OCR 示例";right=427;bottom=224)
winform.add(
edit={cls="edit";left=220;top=164;right=396;bottom=203;edge=1;z=2};
plus={cls="plus";left=27;top=17;right=398;bottom=121;z=1}
)
/*}}*/

import inet.http;
import soImage;

//下载图像
var img = soImage();
img.loadUrl("${url}");
winform.plus.background = img.getBytes("*.jpg");
 
//识别
winform.edit.text = img.ocr(dict);
 
winform.show();
win.loopMessage();
		***/
		
		winform.editDict.text =  strCode.format(
			url = winform.editUrl.text;
			dict = ..util.table.tostring(imageDict,'\t'); 
		);
	}
	
	var img = soImage();
	if(! img.loadUrl(winform.editUrl.text) ){
		winform.editUrl.showWarningTip("获取图像失败，请指定正确网址。");
		return;
	}
	 
	winform.plusImage.background = img.getBytes("*.jpg")
	
	imageData = img.splitBinString();
	
	winform.editText.text = "";
	winform.editText.setFocus(); 
	winform.editText.showInfoTip("请输入验证码上的数字");
}

winform.editText.onOk = function(){ 
	winform.btnNext.oncommand();
	return true; 	
}

winform.show();
win.loopMessage();
```