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,那我应该怎么修改,能让我在脚本启动的时候一次性加载所有字库,保存到不同的变量里面,然后每次识别的时候,定义下需要使用的字库,就省的每次都加载了。