欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

開發(fā)目的

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

實現(xiàn)效果,百度提供的圖片識別,經(jīng)過測試識別車牌號等規(guī)范文字數(shù)字還是比較準確的

環(huán)境需求

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

2.OCR:

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

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

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

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

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

直接使用npm安裝依賴:

npm install baidu-aip-sdk(嘗試沒有成功

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

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

var AipOcrClient = require("baidu-aip-sdk").ocr; 
// 設置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搭建就不再做詳細介紹了,上一篇博客已有哦~~

功能實現(xiàn)

前端上傳圖片后端處理:

router.route("/uploadPhoto").get(function(req,res){ // 到達此路徑則渲染register文件,并傳出title值供 register.html使用
 res.render("uploadPhoto",{title:'圖片文字識別',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; // 保留擴展名
 form.maxFieldsSize = 2 * 1024 * 1024; // 文件大小
 form.uploadDir = 'F:/nodejs/ocrCheck/assets/OCR' // 存儲路徑
 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){ // 存儲文件
   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對象作為闡述傳遞給ocr提供好的方法, 回調(diào)產(chǎn)生的數(shù)據(jù)將作為結(jié)果返回給前端。

####小彩蛋:

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

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

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

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

global.nodeServer.getResult(res,imgName);

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

效果展示

源碼:Node_OCR

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 奇偶行高亮顯示及鼠標劃過高亮顯示類

    奇偶行高亮顯示及鼠標劃過高亮顯示類

    奇或偶數(shù)行高亮顯示及鼠標莫過高亮顯示,一個經(jīng)常用到的效果,也能谷歌到大把的這種效果JS,但好像還沒有一個封裝成類直接用的.想象自己當初谷歌這個類時,還真沒少折騰時間.
    2010-07-07
  • Javascript中With語句用法實例

    Javascript中With語句用法實例

    這篇文章主要介紹了Javascript中With語句用法,實例分析了javascript中with語句的相關使用方法,類似VB語句的用法,需要的朋友可以參考下
    2015-05-05
  • Redux的基本使用過程步驟詳解

    Redux的基本使用過程步驟詳解

    這篇文章主要介紹了Redux的基本使用過程詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • p5.js臨摹動態(tài)圖形的方法

    p5.js臨摹動態(tài)圖形的方法

    這篇文章主要為大家詳細介紹了p5.js臨摹動態(tài)圖形的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 原生JS實現(xiàn)的雙色球功能示例

    原生JS實現(xiàn)的雙色球功能示例

    這篇文章主要介紹了原生JS實現(xiàn)的雙色球功能,涉及javascript隨機數(shù)生成及數(shù)值運算相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • js 動態(tài)生成json對象、時時更新json對象的方法

    js 動態(tài)生成json對象、時時更新json對象的方法

    下面小編就為大家?guī)硪黄猨s 動態(tài)生成json對象、時時更新json對象的方法。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 全面解析Bootstrap中Carousel輪播的使用方法

    全面解析Bootstrap中Carousel輪播的使用方法

    這篇文章主要為大家詳細的介紹了Bootstrap中Carousel的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • JavaScript算法學習之冒泡排序和選擇排序

    JavaScript算法學習之冒泡排序和選擇排序

    這篇文章主要給大家介紹了關于JavaScript算法學習之冒泡排序和選擇排序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • js點亮星星評分并獲取參數(shù)的js代碼

    js點亮星星評分并獲取參數(shù)的js代碼

    點亮星星評分后,點擊按鈕,立即獲得分數(shù)參數(shù)值,方便不想使用ajax傳參的朋友
    2014-07-07
  • JS驗證IP,子網(wǎng)掩碼,網(wǎng)關和MAC的方法

    JS驗證IP,子網(wǎng)掩碼,網(wǎng)關和MAC的方法

    這篇文章主要介紹了JS驗證IP,子網(wǎng)掩碼,網(wǎng)關和MAC的方法,涉及javascript正則表達式的相關使用技巧,需要的朋友可以參考下
    2015-07-07

最新評論