首先根据需求处理图片大小旋转角度,然后识别图片中的文字。
node-images: Node.js 轻量级跨平台图像编解码库
tesseract: 纯 JS 的 OCR 库支持 62 种语言。
例子:
某网站的验证码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| "use strict"
var images = require('images') var Tesseract = require('tesseract.js'); var request = require('request'); var fs = require('fs');
// 将图片下载到本地 function downloadFile(uri, filename, callback) { var stream = fs.createWriteStream(filename); request(uri).pipe(stream) .on('close', function () { callback(); }); }
// 识别图片 function recognize(filePath, callback) { // 图片放大 images(filePath) .size(90) .save(filePath); // 识别 Tesseract .recognize(filePath, { lang: 'eng', // 语言选英文 tessedit_char_blacklist: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' //因为是数字验证码,排除字母 }) .then((result) => { callback(result.text); }); }
function getVcode() { var url = 'https://ww1.sinaimg.cn/large/8c9b876fly1fe0bvsibibj201a00p07l.jpg'; var filename = 'vcode.png'; // 先下载下来,再识别 downloadFile(url, filename, function () { recognize(filename, function (txt) { console.log('识别结果: ' + txt); }); }); }
getVcode();
|