! Texterkennung in einem Bildschirmbereich (screen.ocr_text)
Deklaration
erkennungsergebnis, ergebnisdetails = screen.ocr_text(links, oben, rechts, unten [, Engineoptionen, Binärisierungsoptionen])
Parameter
-
Links, oben, rechts, unten
Ganzzahlen; Bildschirmbereich,0, 0, 0, 0steht für den gesamten Bildschirm -
Engineoptionen
Optional, Tabelle; zur Auswahl der Erkennungssprache und der Erkennungs-EngineParameterstruktur
{
-- Wenn engine auf "apple" gesetzt ist, wird das in iOS 13 und höher integrierte Vision.framework verwendet.
-- Mit image.vision_supported_recognition_languages() kann die Liste der von Vision.framework unterstützten OCR-Modelle abgerufen werden.
-- Wenn engine auf "paddle" gesetzt ist, wird die Paddle-Lite-Engine verwendet. Mit lang kann das Modell angegeben werden.
-- Bei lang = "ppocr_ch" wird beispielsweise das Modell /var/mobile/Media/1ferver/models/ppocr_ch verwendet.
-- Die Paddle-Lite-Engine unterstützt Slim-Modelle im Format *.nb.
engine = "apple" | "paddle" | "tesseract",
lang = "zh-Hans",
}Von Vision.framework unterstützte OCR-Modelle der einzelnen iOS-Versionen
{ -- iOS 13
[1] = "en-US",
}
{ -- iOS 14~15
[1] = "en-US",
[2] = "fr-FR",
[3] = "it-IT",
[4] = "de-DE",
[5] = "es-ES",
[6] = "pt-BR",
[7] = "zh-Hans",
[8] = "zh-Hant",
}
{ -- iOS 16
[ 1] = "en-US",
[ 2] = "fr-FR",
[ 3] = "it-IT",
[ 4] = "de-DE",
[ 5] = "es-ES",
[ 6] = "pt-BR",
[ 7] = "zh-Hans",
[ 8] = "zh-Hant",
[ 9] = "yue-Hans",
[10] = "yue-Hant",
[11] = "ko-KR",
[12] = "ja-JP",
[13] = "ru-RU",
[14] = "uk-UA",
} -
Binärisierungsoptionen
Reelle Zahl, Binärisierungsschwelle; siehe Automatische Binärisierung eines Bildes.
Tabelle, benutzerdefinierte Binärisierungsfarbtoleranz; siehe Manuelle Bildbinärisierung.
Text, benutzerdefinierte Binärisierungsfarbtoleranz; siehe Manuelle Bildbinärisierung.
Rückgabewerte
-
Erkennungsergebnis
Text; erkannter Text -
Ergebnisdetails
TabelleStruktur der OCR-Ergebnisdetails
{
{
["y"] = number_value,
["x"] = number_value,
["w"] = number_value,
["h"] = number_value,
["confidence"] = number_value(0.0000 ~ 1.0000),
["text"] = string_value,
},
...
}
Beschreibung
Die Koordinatenparameter und Rückgabewerte dieser Funktion werden vom durch
screen.initinitialisierten Koordinatensystem beeinflusst.
Um die Abwärtskompatibilität zu gewährleisten, wird bei nicht angegebener Engine standardmäßig die veraltete tesseract-Engine zur Texterkennung verwendet.
Die Apple- und PaddleLite-Erkennungs-Engines werden ab Softwareversion 1.3.8 unterstützt.
PaddleLite-Modell für vereinfachtes Chinesisch, Standardversion (muss entpackt werden)
PaddleLite-Modell für vereinfachtes Chinesisch, Vollversion (muss entpackt werden)
PaddleLite-Erkennungsmodell für traditionelles Chinesisch (muss entpackt werden)
PaddleLite-Erkennungsmodell für englische Buchstaben und Ziffern (muss entpackt werden)
PaddleLite-Erkennungsmodell für Japanisch (muss entpackt werden)
PaddleLite-Erkennungsmodell für Koreanisch (muss entpackt werden)
Alternativ kann das passende Modell aus der PaddleOCR-Modellliste heruntergeladen und indet_opt.nb,cls_opt.nbundrec_opt.nbkonvertiert werden. Anschließend die zugehörigedict.txtsuchen und zusammen damit verwenden.
Beispiel
-- Beispiel für 1.3.8 und höher
txt, info = screen.ocr_text(187, 882, 298, 914, "en-US") -- iOS 13 und höher können das integrierte en-US-Modell für englische Buchstaben und Ziffern verwenden
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, "zh-Hans") -- iOS 14 und höher können das integrierte zh-Hans-Modell für vereinfachtes Chinesisch verwenden
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(187, 882, 298, 914, {
engine = "apple", -- Apple-Engine verwenden
lang = "zh-Hans" -- Erkennungsmodell für vereinfachtes Chinesisch verwenden
}, "9D5D39-0F1F26,D3D3D2-2C2C2D")
sys.toast("识别结果:"..txt:atrim())
txt, info = screen.ocr_text(0, 0, 0, 0, {
engine = "paddle", -- PaddleLite-OCR-Engine verwenden
lang = "ppocr_ch", -- ppocr_ch-Modell verwenden
})
sys.toast("识别结果:"..txt:atrim())
Hinweis: Der obige Code verwendet die Funktionen sys.toast und string.atrim, die nicht zu diesem Kapitel gehören.
Veraltete Version (nicht empfohlen)
Die integrierte tesseract-Engine wird nicht mehr empfohlen. Um die Kompatibilität mit alten Skripten zu gewährleisten, bleibt sie in der aktuellen XXTouch-Version dennoch die Standard-OCR-Engine.
Die integrierte Standard-OCR-Engine ist tesseract Version 3.02. Eine falsche Version oder eine beschädigte Sprachdatei kann zum Absturz des XXTouch-Skriptdienstes führen.
XXTouch enthält bereits die eng-Erkennungsbibliothek [A-Za-z0-9] zur Erkennung gewöhnlicher englischer Buchstaben und Ziffern.
Für die Erkennung vereinfachten Chinesischs oder anderer Sprachen
müssen die entsprechenden Sprachdateien manuell in das Geräteverzeichnis/var/mobile/Media/1ferver/tessdata/importiert werden.
Hier wird eine Sprachdatei für vereinfachtes Chinesisch (muss entpackt werden) bereitgestellt.
Veraltete Beispiele (nicht empfohlen)
-- Beispiel 1:
local txt = screen.ocr_text(187, 882, 298, 914) -- Die Standardkonfiguration verwendet die englische Buchstaben- und Ziffernerkennung der tesseract-Engine.
sys.toast("识别结果:"..txt:atrim())
--
-- Beispiel 2:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Erkennung mit Binärisierung anhand der Farbtoleranz
sys.toast("识别结果:"..txt:atrim())
--
-- Beispiel 3:
local txt = screen.ocr_text(465, 241, 505, 269, "eng", { {0x9D5D39, 0x0F1F26}, {0xD3D3D2, 0x2C2C2D} }) -- Wie oben: Erkennung mit Binärisierung anhand der Farbtoleranz
sys.toast("识别结果:"..txt:atrim())
--
-- Beispiel 4:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "chi_sim", -- Bibliothek für vereinfachtes Chinesisch der tesseract-Engine verwenden (nicht integriert)
white_list = "你我他", -- Whitelist auf "你我他" setzen
})
sys.toast("识别结果:"..txt:atrim())
--
-- Beispiel 5:
local txt = screen.ocr_text(187, 882, 298, 914, {
lang = "eng",
white_list = "1234567890", -- Benutzerdefinierte Whitelist, damit nur Ziffern erkannt werden
}, "9D5D39-0F1F26,D3D3D2-2C2C2D") -- Erkennung mit Binärisierung anhand der Farbtoleranz
sys.toast("识别结果:"..txt:atrim())