Atitit 使用js nodejs进行图像处理ocr的解决方案attilax总结
1.1. 导出类库以及class的调用 1
1.2. Cli接口处理 var exec = require('child_process').exec; 1
1.3. Stdout的输出接受与乱码处理 1
1.4. 大批量数据下的数据接受exit事件可能在data事件之前执行,使用延时策略ok 2
1.5. 线程sleep的问题,使用setInterval解决setInterval(timeEvent,5000); 3
1.6. 线程池问题,cpu占用100%解决,监控进程数量即可 3
1.7. Code D:\0workspace\atiplat_ee\com.attilax\core\process.js 3
大概是调用ocr类库接口,通过cli接口。。有一些问题一点点的解决了。。
脚本语言在图像处理领域也是一个非常好的一个选择,主流基本语言有js pythonphp等。。Attilax更加的看好js ,python的缩进很蛋疼。。脚本语言最大的优点就是不用编译啊,方便修改,体积小巧。部署友好性较好。。
编程语言的可读性与开发效率提升,也是从机器语言>>asm汇编》》native类型语言(vb pb c c++ delphi) >>vm类型语言(java c#) >>script脚本语言(js python php) >>dsl类型语言(halcon matlab脚本等)。。
但是成也编译,败也编译。。为了保护商业机密,源码外漏的脚本语言在商业中还是需要考虑的。。有时只好使用编译型语言了。一般轻编译的vm类型语言java c#.net系列即可满足需求了。。
function Process()
{
this.dbg=false;
}
try{
module.exports.Process = Process;
}catch(e)
{
}
调用模块
var Prcs = require("./com.attilax/core/process.js");
var prc=new Prcs.Process();
通过data 和exit事件处理即可。。
var exec = require('child_process').exec;
var exeHandler = exec(cmd, {
encoding: "binary"
});
exeHandler.stdout.on('data', function (stdout_data) {
var str = iconv.decode(stdout_data, 'GBK');
if(this.dbg)
console.log('-----stdout_data data:' + str);
stdout_data_fun(str);
});
//note ,if many data,,exit event maybe bef the data event ..,in many line data ret .should use timeout ..
exeHandler.on('exit', function (code) {
console.log('---exit code:' + code);
exit_fun(code);
});
var cmd="wmic process get name";
this.exec(cmd,function(lines){
},function(code){
// retFun(li);
setTimeout(function(){
retFun(li);
},1000);
});
要sleep,不然以为js是异步的,会大量占用cpou
prc.listNgrep("tesseract.exe",function(prcs_arr){
console.log("----listNgrep finish..")
console.log(prcs_arr);
});
判断prcs_arr的lenth解决。。在timeevent里面。。
/**
* Created by Administrator on 2017/1/31.
* ns process
*/
function Process()
{
this.dbg=false;
}
//var Process = function(){}
Process.prototype.list=function()
{
var cmd="";
this.exec(cmd,function(line){
},function(code){
})
}
Process.prototype.exec=function(cmd,stdout_data_fun,exit_fun)
{
var pM = require("../../com.attilax/io/path.js");
// var cmd = 'D:\\0workspace\\Tesseract\\tesseract.exe "@jpg@" "@rztName@" -l chi_sim';
;
console.log('-----cmd data:' + cmd);
var iconv = require('iconv-lite');
var exec = require('child_process').exec;
var exeHandler = exec(cmd, {
encoding: "binary"
});
exeHandler.stdout.on('data', function (stdout_data) {
var str = iconv.decode(stdout_data, 'GBK');
if(this.dbg)
console.log('-----stdout_data data:' + str);
stdout_data_fun(str);
});
//note ,if many data,,exit event maybe bef the data event ..,in many line data ret .should use timeout ..
exeHandler.on('exit', function (code) {
console.log('---exit code:' + code);
exit_fun(code);
});
}
Process.prototype.listNgrep=function(grepWord,retFun)
{
var li=new Array();
var cmd="wmic process get name";
this.exec(cmd,function(lines){
var a=lines.split("\r\n");
for(idx in a)
{
var line=a[idx];
line=line.replace("\r","");
var logstr="line.indexOf_grepWord_, line:"+line;
logstr+=", indexof:"+line.indexOf(grepWord);
logstr+=", rzt:"+(line.indexOf(grepWord)>=0);
console.log(logstr);
var idx2=line.indexOf(grepWord);
if(idx2>=0)
{
console.log("--will add"+line);
li.push(line);
}else{}
}
},function(code){
// retFun(li);
setTimeout(function(){
retFun(li);
},1000);
});
}
try{
module.exports.Process = Process;
}catch(e)
{
}
作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher
捕鸟王"Bird Catcher kok 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王
简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴
全名::Emir Attilax Akbar bin Mahmud bin attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当 阿尔 拉帕努伊
常用名:艾提拉(艾龙), EMAIL:[email protected]
头衔:uke总部o2o负责人,全球网格化项目创始人,
uke宗教与文化融合事务部部长, uke宗教改革委员会副主席
Emir Uke部落首席大酋长,
uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,
uke 首席cto 奶牛科技首席cto , 软件部门总监 技术部副总监 研发部门总监主管 产品部副经理 项目部副经理
uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人
Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长
uke终身教育学校副校长 Uke医院 与医学院方面的创始人
uec学院校长, uecip图像处理机器视觉专业系主任 uke文档检索专业系主任
Uke 户外运动协会理事长 度假村首席大村长 uke交友协会会长
uke出版社编辑总编
转载请注明来源:attilax的专栏 ?http://blog.csdn.net/attilax
--Atiend v6