图片被转换为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
- ;; 构造请求体
- (setq requestBody
- (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")
- )
- ;; 处理响应
- (setq status (vl-catch-all-apply
- 'vlax-get-property
- (list winHttp "Status")
- )
- )
- (setq response (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
- )
|