如何制作一个结节命令行图像识别工具
从0 开始制作一个开发命令行验证码识别工具。实现如下效果。
初始化项目
# 创建承认项目创建目录识别激光唱片识别npm init -y#安装主依赖纱线添加图像安装工具依赖纱线添加粉笔码#可选依赖纱线添加袜子5-http-客户端依赖说明
图片:节点轻量级跨平台图像编码库,用于处理下载下来的图片
tesseract.js:纯射流研究…实现的光学字符识别(光学字符识别)工具,用于图像内容识别
粉笔:让命令行内容样式好看
yargs:命令行参数解析器
socks5-http-client :SOCKS v5,用于设置代理,在需要拉取某些不能直接访问的资源时使用,请求代理例子
项目准备
新建cli.js
通常命令行工具入口名字为cli.js,我们新建一个cli.js文件,并在开头写上:
#!/usr/bin/env节点这样,我们告诉*nix系统,JavaScript文件的解释器应该是/usr/bin/env节点,它查找本地安装的节点。
配置容器
//包。JSON { ' bin ' : { ' reg ' : } ./cli.js' }}这样配置完成后,别人新公共管理安装-g @ chenng/识别的包,就可以直接通过命令行运行了:
reg-URL=https://静态。陈红。cn/imgs/test _ img。pnglink本地开发
我们如何能够在本地可以使用娱乐场命令呢?只需要把本项目环即可:
纱线链节核心逻辑
主要逻辑在cli.js和识别。射流研究…中。这里有几个注意点:
请求图片的时候要设置编码:为空,否则返回的是乱码初次使用的时候需要下载训练集,需要花点时间const Tesseract=require(' Tesseract。js’);const images=require(' images ');const request=request(' request ');const fs=require(' fs ');const { promisify }=require(' util ');常数粉笔=require('粉笔');const Writefile=promisify(fs。write file);const RP=promisify(req uset);类识别{构造函数(网址){识别。downloaddir=`$ { _ _ dirname }/dist/`;认出来。download file=`$ { _ _ dirname }/dist/temp。巴布亚新几内亚`;this.url=urlthis。start();} async start(){ const data=this wait。downloadimg();等待写文件(识别。下载文件,数据);这个。承认();const result=等待Tesseract。认识到。下载文件,{ lang: 'eng ',tessedit _ char _黑名单: ' abcdefghijklmnopqrstuvwxyz ',});控制台。日志(` 0识别成功!识别结果为:$ {粉笔。绿色(结果。text)} `);} async downloadImg() { if(!fs。existssync(识别。downloaddir)){ fs。mkdirsync(识别。downloaddir);控制台。日志(` 0创建了$ {识别。downloadDir}文件夹`);} const RES=wait RP({ URL : this。URL,method: 'GET ',encoding: null,});返回res.body}识别(){ //放大图片,并覆盖源文件图像(识别。下载文件)。尺寸(400)。保存(识别。下载文件);} }模块。导出=识别;具体可以查看源码仓库:https://github.com/ring CRL/recognition
发布上线
# 新建代码仓库,git push#登录到npmnpm adduser#发包新公共管理发布-访问公共#全局安装新公共管理安装-g @ chenng/识别以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:如何制作一个结节命令行图像识别工具是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。