需求描述
- 最近有一个图片识别提取文字的需求
- 本来想使用tesseract.js写
- 后来发现识别率还是不太够用
- 于是,更改为使用腾讯云的接口服务(笔者一直购买的是腾讯云的服务器)
- 本文,记录一下使用的过程(主要是使用node启一个服务,再去调用腾讯云的服务)
每个月免费1000额度
- 腾讯云,财大气粗,每个月都有1000额度,如下图:
- 腾讯云,财大气粗,每个月都有1000额度,如下图:
- 腾讯云,财大气粗,每个月都有1000额度,如下图:
个人足够用了...
识别此图片的结果
假设我们有这张图片,需要去识别其中的文字
识别成功的结果json如下:
{
Angel: 359.989990234375,
Angle: 359.989990234375,
Language: 'zh',
PdfPageSize: 0,
RequestId: '5790201d-cd25-402c-b14b-d898242fdd2c',
TextDetections: [
{
AdvancedInfo: '{"Parag":{"ParagNo":1}}',
Confidence: 100,
DetectedText: '《登鹳雀楼》',
ItemPolygon: [Object],
Polygon: [Array],
WordCoordPoint: [],
Words: []
},
{
AdvancedInfo: '{"Parag":{"ParagNo":2}}',
Confidence: 100,
DetectedText: '[唐].王之涣',
ItemPolygon: [Object],
Polygon: [Array],
WordCoordPoint: [],
Words: []
},
{
AdvancedInfo: '{"Parag":{"ParagNo":3}}',
Confidence: 100,
DetectedText: '白日依山尽,黄河入海流。',
ItemPolygon: [Object],
Polygon: [Array],
WordCoordPoint: [],
Words: []
},
{
AdvancedInfo: '{"Parag":{"ParagNo":3}}',
Confidence: 100,
DetectedText: '欲穷千里目,更上一层楼。',
ItemPolygon: [Object],
Polygon: [Array],
WordCoordPoint: [],
Words: []
}
]
}
准确率还是不错的,这样的话,我们拿到识别后的结果,就可以进行相关的操作了
代码
- 使用
npm init --y
创建一个node项目 - 再下载腾讯云的包
npm i tencentcloud-sdk-nodejs --save
- 新建一个
index.js
文件 - 复制粘贴以下代码,即可使用
const fs = require('fs');
const path = require('path');
const tencentcloud = require("tencentcloud-sdk-nodejs")
// 导入对应产品模块的client models。
const OcrClient = tencentcloud.ocr.v20181119.Client
// 实例化要请求产品的client对象
const client = new OcrClient({
// 腾讯云认证信息
credential: {
secretId: "xxxyyyzzzId",
secretKey: "xxxyyyzzzKey",
},
// 产品地域
region: "ap-shanghai",
// 可选配置实例
profile: {
signMethod: "TC3-HMAC-SHA256", // 签名方法
httpProfile: {
reqMethod: "POST", // 请求方法
reqTimeout: 30, // 请求超时时间,默认60s
},
},
})
/**
* 传参方式一,通过图片URL传参
* */
// const params = {
// "ImageUrl": "http://ashuai.work/api/pic.png"
// };
/**
* 传参方式二,通过图片base64传参(读取本地的图片文件,并转成base64)
* */
const data = fs.readFileSync(path.join(__dirname, 'pic.png'));
const base64Image = data.toString('base64');
const dataUrl = `data:image/png;base64,${base64Image}`;
const params = {
"ImageBase64": dataUrl
}
/**
* 通过client对象调用想要访问的接口(Action),需要传入请求对象(Params)以及响应回调函数
* 即:client.Action(Params).then(res => console.log(res), err => console.error(err))
* Action 有多重类型 GeneralBasicOCR通用识别 IDCardOCR身份证识别 DriverLicenseOCR识别等
* */
client.GeneralBasicOCR(params).then(
(data) => {
console.log(data) // 拿到识别后的数据
},
(err) => {
console.error("error", err)
}
)
注意事项
secretId
和 secretKey
secretId
和secretKey
在 控制台获取https://console.cloud.tencent.com/cam/capi
- 如下图示
完整github代码: https://github.com/shuirongshuifu/tx-ocr
腾讯云官方文档:https://cloud.tencent.com/document/product/866/35945
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。