前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >小程序中使用云开发调用智能结构化OCR

小程序中使用云开发调用智能结构化OCR

原创
作者头像
爱去西
发布2025-01-12 22:35:32
发布2025-01-12 22:35:32
8900
代码可运行
举报
文章被收录于专栏:猫窜游戏猫窜游戏
运行总次数:0
代码可运行

1,使用背景

随着智慧城市、智慧政务、智慧企业的科技发展潮流,之前非常多的纸质文件、档案等都被要求进行电子化管理,一是为了能够更方便的储存和备用,但更重要的是,在数据文件日益增长的情况下,引用电子化文档,更能增加搜索、调用文件的效率。

但是,上一代的电子化管理,仅仅是将文件扫描成图片储存起来,虽然可以再抬头名称中进行模糊的查找整个文件,然后调用出来后再一张一张的查看内容,在使用效率上,不能说是明显增加。

那么,将储存好的文档电子化信息(图片),更进一步的转化为可搜索和查找的文字信息,显得尤为重要。

本文以某单位自用的管理小程序为例,详尽讲述如何使用云开发调用腾讯云智能结构化OCR,实现功能。

2,准备工作

通过腾讯云 OCR 控制台页面 开通文字识别服务。

开通后,点击左侧“资源包管理”可以查看到官方赠送的免费额度。目前赠送的额度每个月都会更新,并且次数都很多,完全不必担心开发、测试的费用问题。

3,加入功能

3.1 小程序中加入选择图片并上传的功能

小程序案例图
小程序案例图

新增按钮部分(上图红色“使用图片识别”)

代码语言:javascript
代码运行次数:0
复制
// WXML
<view class="submitBtn" bind:tap="uploadPic">使用图片识别</view>
代码语言:javascript
代码运行次数:0
复制
// CSS
.submitBtn{
  background-color: #db4112;
  color: #ffffff;
  font-size: 40rpx;font-weight: bold;
  width: 400rpx;height: 80rpx;line-height: 80rpx;
  margin: 50rpx auto;
  border-radius: 20rpx;
  text-align: center;align-items: center;
}

前端逻辑部分:

代码语言:javascript
代码运行次数:0
复制
// js部分代码
  data: {
    date:"",//收案日期
    reason:"",//案由
    client:"",//委托人
    where:"",//办案单位
    lawyer:"",//承办律师
  },
  uploadPic(){
    wx.chooseMedia({
      count:1,
      mediaType:["image"],
      sourceType:['album', 'camera'],
      sizeType:['compressed'],
      success:(res=>{
        var size = res.tempFiles[0].size/1024/1024;
        var tempFilePath = res.tempFiles[0].tempFilePath;
        // 文件大小检测,避免用户传入过大图片
        if(size>5){
          wx.showToast({
            title: '文件超过5M',
            duration:3000
          })
          return
        }else{
          wx.showLoading({
            title: '识别中...',
            mask:true
          })
          var timestamp = Date.now().toString();
          // 首先上传文件至云存储,并获取返回的文件ID
          wx.cloud.uploadFile({
            cloudPath: 'tempPic/'+timestamp + '.png',
            filePath: tempFilePath, // 文件路径
          }).then(res => {
            // 调用云函数SmartStructuralOCRV2并传入文件ID参数
            wx.cloud.callFunction({
              name:"SmartStructuralOCRV2",
              data:{
                fileID:res.fileID
              }
            }).then(res=>{
              wx.hideLoading()
              var listArr = res.result.StructuralList
              let listMap = new Map();
              for(let i = 0;i<5;i++){
                listMap.set(listArr[i].Groups[0].Lines[0].Key.AutoName,listArr[i].Groups[0].Lines[0].Value.AutoContent);
              }
              console.log(listMap);
              this.setData({
                date:listMap.get("收案日期"),
                reason:listMap.get("案由"),
                client:listMap.get("办案单位"),
                where:listMap.get("委托人"),
                lawyer:listMap.get("承办律师"),
              })
            })
          }).catch(error => {
            wx.hideLoading()
            console.log(error)
            // handle error
          })
        }
      })
    })
  }

微信开发者工具中,新建上图中调用的云函数SmartStructuralOCRV2

代码语言:javascript
代码运行次数:0
复制
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 腾讯云API
const tencentcloud = require("tencentcloud-sdk-nodejs");
const OcrClient = tencentcloud.ocr.v20181119.Client;
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
const clientConfig = {
  credential: {
    secretId: "AKIDjIcgU1HI2Vhc*******************",
    secretKey: "KOBhwykFagX8Ua****************",
  },
  region: "ap-guangzhou",
  profile: {
    httpProfile: {
      endpoint: "ocr.tencentcloudapi.com",
    },
  },
};
// 云函数入口函数
exports.main = async (event, context) => {
  var fileID = event.fileID;
  // 获取文件临时地址
  const fileList = [fileID]
  const result = await cloud.getTempFileURL({
    fileList: fileList,
  })
  var tempUrl =  result.fileList[0].tempFileURL
  // 实例化要请求产品的client对象,clientProfile是可选的
  const client = new OcrClient(clientConfig);
  const params = {
    "ImageUrl": tempUrl,
    // 此处根据项目需要,筛选返回的键值对
    "ItemNames": [
        "收案日期",
        "案由",
        "办案单位",
        "委托人",
        "承办律师"
    ]
  };
  try{
    return await client.SmartStructuralOCRV2(params)
  }catch(e) {
    console.error(e)
    return false
  }
}

此处云函数的调用加入了腾讯云的SDK,需要添加依赖如下:

云函数目录
云函数目录

在上图云函数目录中,找到package.json文件,加入 "tencentcloud-sdk-nodejs": "^4.0.348" 字段

代码语言:txt
复制
  "dependencies": {
    "wx-server-sdk": "~3.0.1",
    "tencentcloud-sdk-nodejs": "^4.0.348"
  }

在上传云函数之后,即可在云端安装依赖(右键云函数,点击“上传并部署(云端安装依赖)”)

4, 测试

测试图
测试图

点击选择图片测试图后,得到结果如下:

代码语言:txt
复制
Map(5) {"收案日期" => "2024年", "案由" => "保险合同纠纷", "办案单位" => "西山法院", "委托人" => "720公司", "承办律师" => "爱去西"}
[[Entries]]
0: {"收案日期" => "2024年"}
1: {"案由" => "保险合同纠纷"}
2: {"办案单位" => "西山法院"}
3: {"委托人" => "720公司"}
4: {"承办律师" => "爱去西"}
size: (...)
__proto__: Map

同时界面上也在对应字段上填充了值:

结果图
结果图

5,结论

可以看到,腾讯云的智能结构化识别V2接口,在识别打印字体与手写字体混合的图片测试中,也能够非常准确的划分出整体结构,清晰的给出相应的键值对。在获取结果上,也可以根据用户的需求,筛选出想要的部分。

智能结构化识别接口在将老的纸质文档转化为电子数据的工作中,可以说是十分高效,同时也照顾了很多不擅长使用电脑等电子设备做档案管理的同事。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,使用背景
  • 2,准备工作
  • 3,加入功能
    • 3.1 小程序中加入选择图片并上传的功能
  • 4, 测试
  • 5,结论
  • 智能结构化识别接口在将老的纸质文档转化为电子数据的工作中,可以说是十分高效,同时也照顾了很多不擅长使用电脑等电子设备做档案管理的同事。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档