Files
koreader-mirror/frontend/ui/data/ocr.lua

32 lines
987 B
Lua

local lfs = require("libs/libkoreader-lfs")
local OCR = {}
-- Returns a sorted array of detected Tesseract language codes.
function OCR.getOCRLangs()
local langs = {}
local seen = {}
local candidates = {}
local ki = require("document/koptinterface").tessocr_data
if ki then table.insert(candidates, ki) end
local env = os.getenv("TESSDATA_PREFIX")
if env then
table.insert(candidates, env)
table.insert(candidates, env .. "/tessdata")
end
for _, dir in ipairs(candidates) do
if dir and lfs.attributes(dir, "mode") == "directory" then
for file in lfs.dir(dir) do
if file and file ~= "." and file ~= ".." and file:sub(-12) == ".traineddata" then
local code = file:sub(1, -13)
if not seen[code] then seen[code] = true; table.insert(langs, code) end
end
end
end
end
table.sort(langs)
return langs
end
return OCR