mirror of
https://github.com/koreader/koreader.git
synced 2025-12-18 12:02:09 +01:00
32 lines
987 B
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
|