Closed zhuibo66 closed 3 months ago
可以参照上述代码(注释非常详细),用你的语言实现类似的逻辑。
弱弱的问一句,是否又考虑在http接口处增加个段落合并的参数,由py处理好后返回 代码是看了,但是对于py不是很熟练,还是挺费劲的。嘻嘻。
作为临时措施,你可以手动改一下这个文件,实现服务端执行段落合并。
UmiOCR-data\py_src\server\ocr_server.py
import json
import time
import threading
from .bottle import request
from ..mission.mission_ocr import MissionOCR
from ..ocr.tbpu import Merge
def init(UmiWeb):
@UmiWeb.route("/api/ocr/get_options")
def _get_options():
opts = MissionOCR.getLocalOptions()
res = json.dumps(opts)
return res
@UmiWeb.route("/api/ocr", method="POST")
def _ocr():
condition = threading.Condition()
ocrData = None
def onGet(msnInfo, msn, res):
nonlocal ocrData
if res["code"] == 100:
mergeType = "MergeLine" # 可修改不同合并方案
res["data"] = Merge[mergeType]().run(res["data"], None)
ocrData = res
with condition:
condition.notify()
def onEnd(msnInfo, msg):
nonlocal ocrData
if not ocrData:
ocrData = {"code": 803, "data": f"未知原因,未获取OCR返回值。{msg}"}
with condition:
condition.notify()
data = request.json
if not data:
return json.dumps({"code": 800, "data": f"请求为空。"})
if "base64" not in data:
return json.dumps({"code": 801, "data": f"请求中缺少 base64 字段。"})
if "options" not in data:
return json.dumps({"code": 802, "data": f"请求中缺少 options 字段。"})
msnList = [{"base64": data["base64"]}]
options = data["options"]
opt = {}
for k in options:
if "ocr." not in options:
opt["ocr." + k] = options[k]
msnInfo = {"onGet": onGet, "onEnd": onEnd, "argd": opt}
MissionOCR.addMissionList(msnInfo, msnList)
with condition:
condition.wait()
res = json.dumps(ocrData)
return res
mergeType = "MergeLine"
,可以将 MergeLine
改为其它方案,具体看这里。tbpu
顶不住了,这都是什么神仙作者呀,原先是不抱希望的,没想到作者还是写了,太感谢了
还有一点,想问下作者,就是如果我只用到http接口的服务,有没有比较简单的开发调试步骤,目前我每次都需要打开umi-ocr软件,如果打不开我就知道肯定是代码改错了,而且都是盲改,没办法看到打印的可调试输出语句,py萌新也想多了解下该软件的调试方式,感谢感谢
那正好。咱家这项目主打的就是一个简单方便,不仅普通用户能轻松使用,开发者也能轻松完成开发环境部署。
本项目的文档中,详细介绍了开发环境部署的流程。可参照这里:
https://github.com/hiroi-sora/Umi-OCR_v2#%E6%9E%84%E5%BB%BA%E9%A1%B9%E7%9B%AE
正式版已支持通过HTTP参数指定排版方案了,见使用手册: https://github.com/hiroi-sora/Umi-OCR/blob/main/docs/README_HTTP.md
如上图,接口和软件中的不一样,我理解返回的数据应该是要处理,但是并不清楚具体的逻辑