如何将图片转换为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
)
感谢楼主无私分享 本帖最后由 crtrccrt 于 2025-12-9 16:46 编辑
没有给出OCR服务器实际地址+端口
页:
[1]