需求描述

  • 最近有一个图片识别提取文字的需求
  • 本来想使用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)
    }
)

注意事项

secretIdsecretKey

  • secretIdsecretKey 在 控制台获取 https://console.cloud.tencent.com/cam/capi
  • 如下图示

完整github代码: https://github.com/shuirongshuifu/tx-ocr

腾讯云官方文档:https://cloud.tencent.com/document/product/866/35945


水冗水孚
1.1k 声望589 粉丝

每一个不曾起舞的日子,都是对生命的辜负