最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node+OCR實(shí)現(xiàn)圖像文字識(shí)別功能

 更新時(shí)間:2018年11月26日 15:57:57   作者:奔跑的蝸了牛子  
這篇文章主要為大家詳細(xì)介紹了Node+OCR實(shí)現(xiàn)圖像文字識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

開(kāi)發(fā)目的

這算是node應(yīng)用的第二個(gè)小應(yīng)用吧,主要目的是熟悉node和express框架。原理很簡(jiǎn)單:在node搭建的環(huán)境下引用第三方包處理圖片數(shù)據(jù)并返回給前臺(tái)信息。

實(shí)現(xiàn)效果,百度提供的圖片識(shí)別,經(jīng)過(guò)測(cè)試識(shí)別車牌號(hào)等規(guī)范文字?jǐn)?shù)字還是比較準(zhǔn)確的

環(huán)境需求

1.Express 是一個(gè)非常流行的node.js的web框架。基于connect(node中間件框架)。提供了很多便于處理http請(qǐng)求等web開(kāi)發(fā)相關(guān)的擴(kuò)展。

2.OCR:

通用文字識(shí)別 Node SDK目錄結(jié)構(gòu):

├── src
    │  ├── auth                                //授權(quán)相關(guān)類
    │  ├── http                                //Http通信相關(guān)類
    │  ├── client                              //公用類
    │  ├── util                                //工具類
    │  └── const                               //常量類
    ├── AipOcr.js                      //通用文字識(shí)別交互類
    ├── index.js                               //入口文件
    └── package.json                           //npm包描述文件 

支持 node 版本 4.0+
直接使用node開(kāi)發(fā)包步驟如下:

1.在官方網(wǎng)站下載node SDK壓縮包。
2.將下載的aip-node-sdk-version.zip解壓后,復(fù)制到工程文件夾中。
3.進(jìn)入目錄,運(yùn)行npm install安裝sdk依賴庫(kù)
4.把目錄當(dāng)做模塊依賴

其中,version為版本號(hào),添加完成后,用戶就可以在工程中使用通用文字識(shí)別 Node SDK。

直接使用npm安裝依賴:

npm install baidu-aip-sdk(嘗試沒(méi)有成功

AipOcrClient是Optical Character Recognition的node客戶端,為使用Optical Character Recognition的開(kāi)發(fā)人員提供了一系列的交互方法。

用戶可以參考如下代碼新建一個(gè)AipOcrClient:

var AipOcrClient = require("baidu-aip-sdk").ocr; 
// 設(shè)置APPID/AK/SK 
var APP_ID = "你的 App ID"; 
var API_KEY = "你的 Api Key"; 
var SECRET_KEY = "你的 Secret Key"; 
var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY); 

express搭建就不再做詳細(xì)介紹了,上一篇博客已有哦~~

功能實(shí)現(xiàn)

前端上傳圖片后端處理:

router.route("/uploadPhoto").get(function(req,res){ // 到達(dá)此路徑則渲染register文件,并傳出title值供 register.html使用
 res.render("uploadPhoto",{title:'圖片文字識(shí)別',message:""});
}).post(function(req,res){
 // 跨域
 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
 res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");

 let form = new formidable.IncomingForm();
 form.encoding = 'utf-8'; // 編碼
 form.keepExtensions = true; // 保留擴(kuò)展名
 form.maxFieldsSize = 2 * 1024 * 1024; // 文件大小
 form.uploadDir = 'F:/nodejs/ocrCheck/assets/OCR' // 存儲(chǔ)路徑
 form.parse(req,function(err,fileds,files){ // 解析 formData數(shù)據(jù)
  if(err){ return console.log(err) }

  let imgPath = files.img.path // 獲取文件路徑
  let imgName = "F:/nodejs/ocrCheck/assets/OCR/test." + files.img.type.split("/")[1] // 修改之后的名字
  let data = fs.readFileSync(imgPath) // 同步讀取文件

  fs.writeFile(imgName,data,function(err){ // 存儲(chǔ)文件
   if(err){ return console.log(err) }

   fs.unlink(imgPath,function(){}) // 刪除文件
   //上傳圖片成功返回code:1
   //res.json({code:1})
   global.nodeServer.getResult(res,imgName);
  })
 });
});

圖片處理核心模塊:

module.exports = { 
 getResult : function(res,imgName){
  var image = fs.readFileSync(imgName);
  var base64Img = new Buffer(image).toString('base64');
  client.generalBasic(base64Img).then(function(result) {
   console.log(JSON.stringify(result));
   res.json(result);
  });
 }
}

獲取到的base64圖片數(shù)據(jù)和res對(duì)象作為闡述傳遞給ocr提供好的方法, 回調(diào)產(chǎn)生的數(shù)據(jù)將作為結(jié)果返回給前端。

####小彩蛋:

nodeJs中commonJs規(guī)范如何實(shí)現(xiàn)的?

1.Node程序由許多個(gè)模塊組成,每個(gè)模塊就是一個(gè)文件。Node模塊采用了CommonJS規(guī)范。
2.module對(duì)象,Node內(nèi)部提供一個(gè)Module構(gòu)建函數(shù)。所有模塊都是Module的實(shí)例。每個(gè)模塊內(nèi)部,都有一個(gè)module對(duì)象,代表當(dāng)前模塊。它有以下屬性。

module.id 模塊的識(shí)別符,通常是帶有絕對(duì)路徑的模塊文件名。
module.filename 模塊的文件名,帶有絕對(duì)路徑。
module.loaded 返回一個(gè)布爾值,表示模塊是否已經(jīng)完成加載。
module.parent 返回一個(gè)對(duì)象,表示調(diào)用該模塊的模塊。
module.children 返回一個(gè)數(shù)組,表示該模塊要用到的其他模塊。
module.exports 表示模塊對(duì)外輸出的值。

3.調(diào)用:根據(jù)模塊名稱作為對(duì)象調(diào)用其內(nèi)自定義的方法即可。

global.nodeServer.getResult(res,imgName);

前端js代碼就不貼了 so~easy

效果展示

源碼:Node_OCR

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • html+javascript+bootstrap實(shí)現(xiàn)層級(jí)多選框全層全選和多選功能

    html+javascript+bootstrap實(shí)現(xiàn)層級(jí)多選框全層全選和多選功能

    想做一個(gè)先按層級(jí)排序并可以多選的功能,首先傾向于用多層標(biāo)簽式的,直接選定加在文本域里,接下來(lái)通過(guò)本文給大家介紹html+javascript+bootstrap實(shí)現(xiàn)層級(jí)多選框全層全選和多選功能,需要的朋友參考下
    2017-03-03
  • js動(dòng)態(tài)實(shí)現(xiàn)表格添加和刪除操作

    js動(dòng)態(tài)實(shí)現(xiàn)表格添加和刪除操作

    這篇文章主要為大家詳細(xì)介紹了js動(dòng)態(tài)實(shí)現(xiàn)表格添加和刪除操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JS數(shù)組排序技巧匯總(冒泡、sort、快速、希爾等排序)

    JS數(shù)組排序技巧匯總(冒泡、sort、快速、希爾等排序)

    這篇文章主要介紹了JS數(shù)組排序技巧,實(shí)例匯總了JavaScript冒泡排序、sort排序、快速排序、希爾排序等,并附帶分析了sort排序的相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-11-11
  • Three.js渲染模型卡頓問(wèn)題的一些優(yōu)化辦法

    Three.js渲染模型卡頓問(wèn)題的一些優(yōu)化辦法

    用ThreeJS加載大模型總要遇到性能問(wèn)題,性能優(yōu)化一般包括加載性能優(yōu)化、渲染幀率優(yōu)化、內(nèi)存優(yōu)化等,下面這篇文章主要給大家介紹了關(guān)于Three.js渲染模型卡頓問(wèn)題的一些優(yōu)化辦法,需要的朋友可以參考下
    2024-02-02
  • 簡(jiǎn)單實(shí)現(xiàn)js輪播圖效果

    簡(jiǎn)單實(shí)現(xiàn)js輪播圖效果

    這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)js輪播圖效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 原生js無(wú)縫輪播插件使用詳解

    原生js無(wú)縫輪播插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了原生js無(wú)縫輪播插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • HTML與javascript常碰到的編碼問(wèn)題

    HTML與javascript常碰到的編碼問(wèn)題

    在日常的前端開(kāi)發(fā)工作中,我們會(huì)經(jīng)常的與HTML、javascript、css等語(yǔ)言打交道,和一門真正的語(yǔ)言一樣,計(jì)算機(jī)語(yǔ)言也有它的字母表、語(yǔ)法、詞法、編碼方式等
    2008-12-12
  • JS+CSS實(shí)現(xiàn)的漂亮漸變背景特效代碼(6個(gè)漸變效果)

    JS+CSS實(shí)現(xiàn)的漂亮漸變背景特效代碼(6個(gè)漸變效果)

    這篇文章主要介紹了JS+CSS實(shí)現(xiàn)的漂亮漸變背景特效代碼,包含6個(gè)漸變效果,涉及JavaScript針對(duì)頁(yè)面元素屬性動(dòng)態(tài)操作的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03
  • 微信接入之獲取用戶頭像的方法步驟

    微信接入之獲取用戶頭像的方法步驟

    這篇文章主要介紹了微信接入之獲取用戶頭像的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 微信小程序?qū)崿F(xiàn)手勢(shì)圖案鎖屏功能

    微信小程序?qū)崿F(xiàn)手勢(shì)圖案鎖屏功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)手勢(shì)圖案鎖屏功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

娄烦县| 株洲市| 邢台县| 崇仁县| 舟山市| 祁阳县| 梁山县| 青铜峡市| 岫岩| 浙江省| 达州市| 波密县| 英吉沙县| 郎溪县| 武平县| 陆河县| 十堰市| 上犹县| 龙泉市| 湾仔区| 宁津县| 古交市| 鹤峰县| 康保县| 三门峡市| 温宿县| 忻州市| 繁昌县| 循化| 衡阳市| 昌宁县| 红桥区| 芮城县| 普兰县| 古交市| 乌恰县| 永靖县| 河曲县| 高清| 绥滨县| 青冈县|