dcl1214 发表于 3 天前

如何将图片转换为base64后的数据发送到远程服务器上识别图片文字

图片被转换为base64后,如何发送到远程ocr服务器,请看下文(defun $umi-ocr-recognize$ (ip port base64Data f)
;调用方法:(setq txts ($umi-ocr-recognize$ ip port ($tu-pian-base64$ "C:/123.png") "/api/ocr"))
(if (and ip port base64Data)
    (progn
      (if (not f)
(setq f "/api/ocr")
;; 默认端点
      )
      (setq fullUrl (strcat ip ":" port f))
      (setq winHttp (vl-catch-all-apply
          'vlax-create-object
          (list "WinHttp.WinHttpRequest.5.1")
      )
      )
      (if (vl-catch-all-error-p winHttp)
(progn (princ "无法创建HTTP对象") (setq winHttp nil))
      )
      (if winHttp
(progn
    ;; 构造请求体
    (setqrequestBody
   (strcat
       "{"      "\"images\":[\""
       base64Data    "\"],"
       "\"language\":\"chs+eng\","
       "\"det\":true,""\"rec\":true,"
       "\"cls\":false""}"
      )
    )
    ;; 发送请求
    (vl-catch-all-apply
      'vlax-invoke-method
      (list
      winHttp "Open" "POST" fullUrl :vlax-false)
    )
    (vl-catch-all-apply
      'vlax-invoke-method
      (list
      winHttp
      "SetRequestHeader"
      "Content-Type"
      "application/json"
      )
    )
    (vl-catch-all-apply
      'vlax-invoke-method
      (list winHttp "Send" requestBody)
    )
    (vl-catch-all-apply
      'vlax-invoke
      (list winHttp "WaitForResponse")
    )
    ;; 处理响应
    (setqstatus (vl-catch-all-apply
       'vlax-get-property
       (list winHttp "Status")
         )
    )
    (setqresponse (vl-catch-all-apply
         'vlax-get-property
         (list winHttp "ResponseText")
       )
    )
    (vl-catch-all-apply 'vlax-release-object (list winHttp))
    (if (= status 200)
      t
      (progn
      (princ (strcat "错误: HTTP " (itoa status)))
      nil
      )
    )
)
nil
      )
    )
)
response
)

tranque 发表于 3 天前

感谢楼主无私分享

crtrccrt 发表于 3 天前

本帖最后由 crtrccrt 于 2025-12-9 16:46 编辑

没有给出OCR服务器实际地址+端口
页: [1]
查看完整版本: 如何将图片转换为base64后的数据发送到远程服务器上识别图片文字