发展目的
这是node应用的第二个小应用,主要目的是熟悉node和express框架。原理很简单:在节点搭建的环境中,引用第三方包对图片数据进行处理,返回给前台信息。
为达到效果,百度提供的图片识别,经过测试,识别出车牌号码等标准文字数字。它仍然相对准确
环境需求
1.Express是一个非常流行的基于connect(节点中间件框架)的node . js web框架。提供许多与web开发相关的扩展,例如http请求。
2.光学字符识别:
通用字符识别节点软件开发工具包目录结构:
src auth //授权相关类 http //Http通信相关类 客户端//公共类 util //工具类 const //常量类
要支持节点4.0版本直接使用节点开发包,步骤如下:
1.在官网下载节点SDK压缩包。2.提取下载的aip-node-sdk-version.zip并将其复制到项目文件夹中。3.输入目录并运行npm install以安装sdk依赖库4。将目录作为模块依赖项
其中,版本为版本号,添加后用户可以在项目中使用通用字符识别Node SDK。
直接使用npm安装依赖项:
Npm安装baidu-aip-sdk(尝试失败)
AipOcrClient是光学字符识别的节点客户端,为使用光学字符识别的开发者提供了一系列的交互方式。
用户可以参考以下代码来创建新的AipOcrClient:
var aipocrcclient=required(' Baidu-AIP-SDK ')。ocr//设置APPID/AK/SK var APP_ID='您的APP ID ';Var API_KEY='您的API密钥';Var秘钥='您的秘钥';var客户端=新aipocrcclient(APP _ ID,API_KEY,SECRET _ KEY);快递建设就不详细介绍了,上次博客已经有了~ ~
功能实现
前端上传图片后端处理:
Router.route ('/uploadphoto ')。get (function (req,RES){//到达此路径时,渲染寄存器文件,并发出标题值,供register.html使用res.render ('uploadphoto ',{title : '图片和文本识别',message : ' ' });}).post(function(req,res){ //跨域RES . header(' access-control-allow-origin ',' * '));res.header('访问控制-允许-方法',' PUT,POST,GET,DELETE,OPTIONS ');RES . header(‘访问控制-允许-头’,‘内容类型,内容长度,授权,接受,X-请求-与’);让形式=新的强大。IncomingForm();form . encoding=“utf-8”;//代码form.keepExtensions=true//保留扩展名形式. form.maxFieldsSize=2 * 1024 * 1024//文件大小form . uploaddir=' f :/nodejs/ocr check/assets/ocr '/存储路径form.parse (req,function (err,fileds,Files){//parse formData data if(err){ return console . log(err)}让img path=files.img.path//get文件路径让imgname=' f :/nodejs/ocr check/assets/ocr/Test 'files . img . type . split('/')[1]//修改后的名称让data=fs . readfilesync(img path)//读取文件fs.writeFile(imgName,data,Function(err){ //保存文件if(err){ return console . log(err)} fs . unlink(img path,Function(){ })//删除文件//上传图片并成功返回code :1//RES . JSON({ code 33601 })global . nodeserver . }))});});图像处理核心模块:
module . exports={ getResult : function(RES,imgName){ var image=fs . readfilesync(imgName);var base64Img=新缓冲区(图像)。toString(' base64 ');client.generalBasic(base64Img)。然后(function(result){ console . log(JSON . stringify(result));res.json(结果);});}}由{ }获得的base64图片数据和res对象提供了一个很好的转移到ocr的方法作为解释,回调生成的数据将作为结果返回到前端。
# # # #小鸡蛋:
如何在nodeJs中实现commonJs规范?
1.1。节点程序由许多模块组成,每个模块都是一个文件。节点模块采用CommonJS规范。2 .模块对象,节点内部提供模块构建功能。所有模块都是模块的实例。在每个模块内部,都有一个代表当前模块的模块对象。它具有以下属性。
module.id模块的标识符,通常是带有绝对路径的模块文件名。模块. file name的文件名,带有绝对路径。Module.loaded返回一个布尔值,该值指示模块是否已完成加载。Module.parent返回一个对象,该对象表示调用该模块的模块。Module.children返回一个数组,该数组表示该模块要使用的其他模块。module.exports表示模块外部输出的值。3.调用:根据作为对象的模块名称,调用其中的用户定义方法。
global . nodeserver . getresult(RES,imgName);前端js代码没那么容易发布
效果显示
源代码:Node_OCR
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。