Node 识别图片中的文字

首先根据需求处理图片大小旋转角度,然后识别图片中的文字。
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
"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();

运行结果