aardio 文档

aardio 范例: 简单 OCR 代码生成器

//简单 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 组件。
*/

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.stringify(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();

Markdown 格式