大漠字库识别文字,如果多个字库,该如何处理

发布于 2019-10-25 15:51:43
DM = {
    LoadDict = (function(sPath)
            tDict = {}
            local f = io.open(sPath,"r")
            if not f then
                notifyMessage(string.format("字库打开错误:%s",sPath),5000)
                return
            end
            local str = f:read()
            while str do
                str = string.gsub(str, "%$", "|")
                local s = DM.Split(str,"|")
                local v = s[1]
                local ps={}
                local Or = DM.HexToOr(v)
                local len = string.len(Or)
                local w = math.floor(len/11)
                local h = tonumber(s[4])

                if h>=11 then
                    h = 11
                    for i=1,w*h do
                        table.insert(ps,tonumber(string.sub(Or,i,i)))
                    end
                else
                    local clum = 1
                    for i=1,len do
                        if i%12<=h then
                            table.insert(ps,tonumber(string.sub(Or,i,i)))
                        end
                    end
                end

                table.insert(tDict,{ps=ps,c=s[2],w = w,h = h})
                str = f:read()
            end
            f:close()
        end)
        }

这个是大漠识别的一个字库加载封装,使用的时候是这样的
DM.LoadDict("/var/touchelf/res/dm.txt")
加载过后开始识别文字,但是有个问题,如果我有多个字库的时候,该如何加载,我现在的方式是每次识别的时候就加载一次对应的字库,但是这样速度会很慢,我看了,上面的变量似乎是tDict,那我应该怎么修改,能让我在脚本启动的时候一次性加载所有字库,保存到不同的变量里面,然后每次识别的时候,定义下需要使用的字库,就省的每次都加载了。

查看更多

关注者
0
被浏览
1.4k
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览