如何制作一個(gè)Node命令行圖像識(shí)別工具
從 0 開始制作一個(gè) NodeJS 命令行驗(yàn)證碼識(shí)別工具。實(shí)現(xiàn)如下效果。
初始化項(xiàng)目
# 創(chuàng)建 recognition 項(xiàng)目 mkdir recognition cd recognition npm init -y # 安裝主依賴 yarn add images tesseract.js # 安裝工具依賴 yarn add chalk yargs # 可選依賴 yarn add socks5-http-client
依賴說明
images :Node.js 輕量級(jí)跨平臺(tái)圖像編碼庫,用于處理下載下來的圖片
tesseract.js :純 JS 實(shí)現(xiàn)的 OCR(光學(xué)字符識(shí)別)工具,用于圖像內(nèi)容識(shí)別
chalk :讓命令行內(nèi)容樣式好看
yargs :命令行參數(shù)解析器
socks5-http-client :SOCKS v5,用于設(shè)置代理,在需要拉取某些不能直接訪問的資源時(shí)使用, request proxy 例子
項(xiàng)目準(zhǔn)備
新建 cli.js
通常命令行工具入口名字為 cli.js
,我們新建一個(gè) cli.js
文件,并在開頭寫上:
#!/usr/bin/env node
這樣,我們告訴 *nix 系統(tǒng),JavaScript 文件的解釋器應(yīng)該是 /usr/bin/env node
,它查找本地安裝的 node
。
配置 bin
// package.json { "bin": { "reg": "./cli.js" } }
這樣配置完成后,別人 npm install -g @chenng/recognition
的包,就可以直接通過命令行運(yùn)行了:
reg --url=https://static.chenng.cn/imgs/test_img.png
link 本地開發(fā)
我們?nèi)绾文軌蛟诒镜乜梢允褂?rec
命令呢?只需要把本項(xiàng)目 link 即可:
yarn link
核心邏輯
主要邏輯在 cli.js
和 recognize.js
中。這里有幾個(gè)注意點(diǎn):
- request 圖片的時(shí)候要設(shè)置
encoding: null
,否則返回的是亂碼 - 初次使用的時(shí)候需要下載訓(xùn)練集,需要花點(diǎn)時(shí)間
const Tesseract = require('tesseract.js'); const images = require('images'); const requset = require('request'); const fs = require('fs'); const { promisify } = require('util'); const chalk = require('chalk'); const writeFile = promisify(fs.writeFile); const rp = promisify(requset); class Recognize { constructor(url) { Recognize.downloadDir = `${__dirname}/dist/`; Recognize.downloadFile = `${__dirname}/dist/temp.png`; this.url = url; this.start(); } async start() { const data = await this.downloadImg(); await writeFile(Recognize.downloadFile, data); this.recognize(); const result = await Tesseract.recognize(Recognize.downloadFile, { lang: 'eng', tessedit_char_blacklist: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', }); console.log(` 識(shí)別成功! 識(shí)別結(jié)果為:${chalk.green(result.text)} `); } async downloadImg() { if (!fs.existsSync(Recognize.downloadDir)) { fs.mkdirSync(Recognize.downloadDir); console.log(`創(chuàng)建了 ${Recognize.downloadDir} 文件夾`); } const res = await rp({ url: this.url, method: 'GET', encoding: null, }); return res.body; } recognize() { // 放大圖片,并覆蓋源文件 images(Recognize.downloadFile) .size(400) .save(Recognize.downloadFile); } } module.exports = Recognize;
具體可以查看源碼倉庫: https://github.com/ringcrl/recognition
發(fā)布上線
# 新建代碼倉庫,git push # 登錄到 npm npm adduser # 發(fā)包 npm publish --access public # 全局安裝 npm install -g @chenng/recognition
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于MATLAB神經(jīng)網(wǎng)絡(luò)圖像識(shí)別的高識(shí)別率代碼
- python自動(dòng)截取需要區(qū)域,進(jìn)行圖像識(shí)別的方法
- Node Puppeteer圖像識(shí)別實(shí)現(xiàn)百度指數(shù)爬蟲的示例
- iOS通過攝像頭圖像識(shí)別技術(shù)分享
- python實(shí)現(xiàn)識(shí)別手寫數(shù)字 python圖像識(shí)別算法
- python實(shí)現(xiàn)圖像識(shí)別功能
- 用Python進(jìn)行簡單圖像識(shí)別(驗(yàn)證碼)
- C#圖像識(shí)別 微信跳一跳機(jī)器人
- 微信跳一跳python輔助軟件思路及圖像識(shí)別源碼解析
- PHP圖像識(shí)別技術(shù)原理與實(shí)現(xiàn)
- JAVA演示阿里云圖像識(shí)別API,印刷文字識(shí)別-營業(yè)執(zhí)照識(shí)別
相關(guān)文章
nodejs個(gè)人博客開發(fā)第七步?后臺(tái)登陸
這篇文章主要為大家詳細(xì)介紹了nodejs個(gè)人博客開發(fā)的后臺(tái)登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04史上無敵詳細(xì)的Node.Js環(huán)境搭建步驟記錄
Node.js是一個(gè)事件驅(qū)動(dòng)I/O服務(wù)端JavaScript環(huán)境,由于其擁有異步非阻塞、環(huán)境搭建簡單、實(shí)踐應(yīng)用快等特性,使得其在新一代編程開發(fā)中更為流行,下面這篇文章主要給大家介紹了關(guān)于Node.Js環(huán)境搭建步驟記錄的相關(guān)資料,需要的朋友可以參考下2023-03-03深入理解Commonjs規(guī)范及Node模塊實(shí)現(xiàn)
本篇文章主要介紹了深入理解Commonjs規(guī)范及Node模塊實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05可能是全網(wǎng)最詳細(xì)的nodejs卸載和安裝教程
npm的中文意思為"node包管理器",是Node.js平臺(tái)的默認(rèn)包管理工具,會(huì)隨著Nodejs一起安裝,npm管理對應(yīng)node.js的第三方插件,下面這篇文章主要給大家介紹了關(guān)于nodejs卸載和安裝教程的相關(guān)資料,這可能全網(wǎng)最詳細(xì)的教程了,需要的朋友可以參考下2023-05-05使用nodejs、Python寫的一個(gè)簡易HTTP靜態(tài)文件服務(wù)器
這篇文章主要介紹了使用nodejs、Python寫的一個(gè)簡易HTTP靜態(tài)文件服務(wù)器,分為nodejs和Python兩個(gè)版本,用類似淘寶的CSS、JS文件加載方式處理靜態(tài)文件加載,需要的朋友可以參考下2014-07-07vscode執(zhí)行npm時(shí)的一些錯(cuò)誤以及處理辦法
在前端開發(fā)過程中,npm的使用是少不了的,所以需要知道基本的操作使用,并且了解常見的異常情況處理,下面這篇文章主要給大家介紹了關(guān)于vscode執(zhí)行npm時(shí)的一些錯(cuò)誤以及處理辦法的相關(guān)資料,需要的朋友可以參考下2022-07-07