EXCEL VBA调用百度api识别身份证

EXCEL VBA调用百度api识别身份证

Sub BC_识别身份证()
    Dim SHD, SHX As Worksheet
    Dim AppKey, SecretKey, Token, PathY As String
    Dim jSon, JSonA, WithHttp As Object
    Dim Pic, oDom, oW, jsCode, params
    Dim ARX, BRX, DRX, ERX, ZAD
    Dim StrText, StrUrl As String
    Dim StrA, StrB, StrC  As String
    Dim I, X, K As Long
    
    
    Rem 禁止系统刷屏?触发其他事件等
    'On Error Resume Next    '// 发生错误,自动执行下一句,就是忽略错误
    
    
    Rem  获取百度Token
    Set SHX = Worksheets("参数")
    AppKey = SHX.Range("B1").Value
    SecretKey = SHX.Range("B2").Value
    Token = GetTokenBaiDu(AppKey:=AppKey, SecretKey:=SecretKey)
    
    Rem 指定发票文件, 可以是PDF,或JPG,PNG文件, 暂不支持: 一张放票内多条明细, 一个文件内多张发票
    PathY = GetFileName(KZM:="图片文件,*.png;*.bmp;*.jpeg;*.jpg", Title:="请选择图片文件", FileName:="", StrSplitor:="\")
    Open PathY For Binary As #1
    Dim chs() As Byte
    For I = 0 To LOF(1) - 1 '循环至文件末端
        ReDim Preserve chs(0 To K) As Byte '将文件内容存入字节数组
        Get #1, , chs(K) '获取文本内容
        K = K + 1
    Next I
    Close #1
    
    Pic = Byte2Base64(chs)
    Set oDom = CreateObject("htmlfile")
    Set oW = oDom.parentWindow
    jsCode = "encodeURIComponent('" & Pic & "');"
    Pic = oW.eval(jsCode)
    Rem Pic = WorksheetFunction.EncodeURL(Pic)
    params = "id_card_side=" + "front" + "&image=" & Pic
    '    params = "image=" & Pic
    StrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=" & Token
    Set WithHttp = CreateObject("winhttp.winhttprequest.5.1")
    With WithHttp
        .Open "post", StrUrl, False
        .setRequestHeader "content-type", "application/x-www-form-urlencoded"
        .send (params)
        StrText = BytesToBstr(.Responsebody, "utf-8")
    End With
    Set oDom = Nothing
    Set oW = Nothing
    
    Rem SHX.Range("G4").Value = StrText '// StrText = SHX.Range("G4").Value
    
    Rem 创建JSON对象并将其赋值为要解析的JSON字符串
    Set jSon = JsonConverter.ParseJson(StrText)
    Rem  jSon.Count & vbCrLf & jSon.Items()(0) & vbCrLf & jSon.keys()(0)
    Rem JSON("forecast")("forecastday")("hour")(i)("time_epoch")
    Rem  IntX = jSon("words_result")("CommodityName").Count
    
    Rem 写到字典中
    Set ZAD = CreateObject("Scripting.Dictionary")
    If InStr(StrText, "姓名") = 0 Then
        If InStr(StrText, "签发日期") > 0 Then
            ZAD("签发日期") = jSon("words_result")("签发日期")("words")
            ZAD("失效日期") = jSon("words_result")("失效日期")("words")
            ZAD("签发机关") = jSon("words_result")("签发机关")("words")
        Else
            ZAD("错误") = "识别失败,返回结果错误"
        End If
    Else
        ZAD("姓名") = jSon("words_result")("姓名")("words")
        ZAD("性别") = jSon("words_result")("性别")("words")
        ZAD("出生日期") = jSon("words_result")("出生")("words")
        ZAD("身份号码") = jSon("words_result")("公民身份号码")("words")
        ZAD("民族") = jSon("words_result")("民族")("words")
        ZAD("住址") = jSon("words_result")("住址")("words")
    End If
    
    Rem 写入数组并输出
    ERX = ZAD.keys
    ReDim DRX(0 To UBound(ERX), 0 To 1)
    For X = 0 To UBound(ERX)
        DRX(X, 0) = ERX(X)
        DRX(X, 1) = ZAD(ERX(X))
    Next
    
    Set SHD = Worksheets("test")
    SHD.Range("A:B").ClearContents
    SHD.Range("A1").Resize(UBound(DRX, 1) + 1, UBound(DRX, 2) + 1) = DRX
    
    MsgBox UBound(DRX, 1), vbInformation, "识别成功"
End Sub




相关推荐

  1. EXCEL VBA调用api识别身份证

    2024-02-02 07:08:07       32 阅读
  2. EXCEL VBA调用API翻译

    2024-02-02 07:08:07       31 阅读
  3. OCR api调用代码

    2024-02-02 07:08:07       25 阅读
  4. 图像增强与特效-API调用实践-AI

    2024-02-02 07:08:07       13 阅读
  5. 如何利用langchian调用大模型API

    2024-02-02 07:08:07       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-02 07:08:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-02 07:08:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-02 07:08:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-02 07:08:07       20 阅读

热门阅读

  1. PyTorch与TensorFlow的安装与介绍

    2024-02-02 07:08:07       31 阅读
  2. Qt应用软件【协议篇】modbus-tcp示例

    2024-02-02 07:08:07       31 阅读
  3. Kafka客户端实战

    2024-02-02 07:08:07       34 阅读
  4. 考研经验总结——考试期间

    2024-02-02 07:08:07       35 阅读
  5. Linux内核--设备驱动(一)驱动的结构介绍

    2024-02-02 07:08:07       29 阅读
  6. 【嵌入式——C++】list(STL)

    2024-02-02 07:08:07       34 阅读
  7. 韦达定理用处多

    2024-02-02 07:08:07       26 阅读
  8. 私有化部署dos游戏

    2024-02-02 07:08:07       28 阅读