Tesseract OCR
模型文件可通过以下渠道下载:
下载完成后,可选择以下任一方式存放:
脚本项目的
res/tesseractdata
目录本地任意目录下的
tesseractdata
子目录
完成存放后,即可在代码中加载并使用这些模型。


在虚拟屏幕中识别
import com.m8test.script.GlobalVariables.*
import com.m8test.script.core.api.display.Display
// 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
fun getDisplay(): Display {
return _displays.getAll().firstOrNull() ?: _displays.create {
// 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
}
}
// 获取一个虚拟屏幕
val display = getDisplay()
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
val tesseractOcr = _ocrs!!.tesseract {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
setApi("chi_sim+eng", 1)
}
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
val results = tesseractOcr.analyzeDisplay(display.getId(), null)
_console.log(results.getText("\n"))
import com.m8test.script.core.api.display.Display
// 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
Display getDisplay() {
def allDisplays = $displays.getAll()
if (allDisplays.size() > 0) return allDisplays.get(0)
// 创建虚拟屏幕, create 方法会返回一个 Display 对象
def display = $displays.create {
// 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
}
return display
}
// 获取一个虚拟屏幕
def display = getDisplay()
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
def tesseractOcr = $ocrs.tesseract {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
}
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
def results = tesseractOcr.analyzeDisplay(display.getId(), null)
$console.log(results.getText("\n"))
import com.m8test.ocr.api.OcrResults;
import com.m8test.ocr.api.TesseractOcr;
import com.m8test.ocr.api.TesseractOcrConfig;
import com.m8test.script.core.api.display.Display;
import kotlin.jvm.functions.Function1;
import java.util.List;
import static com.m8test.script.GlobalVariables.*;
private static Display getDisplay() {
List<Display> allDisplays = $displays.getAll();
if (allDisplays.size() > 0) return (Display) allDisplays.get(0);
// 创建虚拟屏幕, create 方法会返回一个 Display 对象
return $displays.create(new Function1() {
@Override
public Object invoke(Object o) {
// 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
return null;
}
});
}
// 获取一个虚拟屏幕
Display display = getDisplay();
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
TesseractOcr tesseractOcr = $ocrs.tesseract(new Function1() {
@Override
public Object invoke(Object o) {
TesseractOcrConfig it = (TesseractOcrConfig) o;
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"); // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"); // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1);
return null;
}
});
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
OcrResults results = tesseractOcr.analyzeDisplay(display.getId(), null);
$console.log(results.getText("\n"));
/**
* 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
*
* @returns {Packages.com.m8test.script.core.api.display.Display}
*/
function getDisplay() {
let allDisplays = $displays.getAll()
if (allDisplays.size() > 0) return allDisplays.get(0)
// 创建虚拟屏幕, create 方法会返回一个 Display 对象
return $displays.create(function (config) {
// 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
})
}
// 获取一个虚拟屏幕
let display = getDisplay()
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
let tesseractOcr = $ocrs.tesseract(function (it) {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
})
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
let results = tesseractOcr.analyzeDisplay(display.getId(), null)
$console.log(results.getText("\n"))
-- 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
--- @return m8test_java.com.m8test.script.core.api.display.Display
function getDisplay()
local allDisplays = _displays:getAll()
if not allDisplays:isEmpty() then
return allDisplays:get(0)
else
return _displays:create(function(config)
-- 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
end)
end
end
-- 获取一个虚拟屏幕
local display = getDisplay()
-- Ocrs.tesseract() 用于创建 TesseractOcr 对象
local tesseractOcr = _ocrs:tesseract(function(it)
-- TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:--github.com/tesseract-ocr/tessdata_fast 下载
it:addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") -- 添加中文
it:addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") -- 添加英文
-- 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it:setApi("chi_sim+eng", 1)
end)
-- Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
local results = tesseractOcr:analyzeDisplay(display:getId(), nil)
_console:log(results:getText("\n"))
<?php
/** @var m8test_java\com\m8test\script\core\api\display\Displays $displays */
global $displays;
/**
* 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
* @param \m8test_java\com\m8test\script\core\api\display\Displays $displays
* @return \m8test_java\com\m8test\script\core\api\display\Display
*/
function getDisplay($displays)
{
$allDisplays = $displays->getAll();
if ($allDisplays->size() > 0) {
return $allDisplays->get(0);
} else {
return $displays->create(function ($config) {
// 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
});
}
}
// 获取一个虚拟屏幕
$display = getDisplay($displays);
/** @var m8test_java\com\m8test\ocr\api\Ocrs $ocrs */
global $ocrs;
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
$tesseractOcr = $ocrs->tesseract(function($it) {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
$it->addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"); // 添加中文
$it->addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"); // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
$it->setApi("chi_sim+eng", 1);
});
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
$results = $tesseractOcr->analyzeDisplay($display->getId(), null);
/** @var m8test_java\com\m8test\script\core\api\console\Console $console */
global $console;
$console->log($results->getText("\n"));
from m8test_java.com.m8test.script.GlobalVariables import _console
from m8test_java.com.m8test.script.GlobalVariables import _displays
from m8test_java.com.m8test.script.GlobalVariables import _ocrs
# 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
def getDisplay():
allDisplays = _displays.getAll()
if allDisplays.size() > 0:
return allDisplays.get(0)
else:
return _displays.create(lambda config:
# 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
config)
# 获取一个虚拟屏幕
display = getDisplay()
# Ocrs.tesseract() 用于创建 TesseractOcr 对象
tesseractOcr = _ocrs.tesseract(lambda it:
# TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:#github.com/tesseract-ocr/tessdata_fast 下载
(it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"), # 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"), # 添加英文
# 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)))
# Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
results = tesseractOcr.analyzeDisplay(display.getId(), None)
_console.log(results.getText("\n"))
# encoding: utf-8
java_import 'com.m8test.script.core.api.display.Display'
# 获取一个虚拟屏幕,如果已经存在的话则直接使用原有的,否则创建一个
# @return [Display] 已存在或者新创建的虚拟屏幕
def getDisplay
allDisplays = $displays.getAll
if allDisplays.size > 0
allDisplays.get(0)
else
$displays.create { |config|
# 这里可以配置虚拟屏幕,推荐直接使用默认配置,如果出错的话再手动配置
}
end
end
# 获取一个虚拟屏幕
display = getDisplay()
java_import 'com.m8test.ocr.api.TesseractOcrConfig'
# Ocrs.tesseract() 用于创建 TesseractOcr 对象
tesseractOcr = $ocrs.tesseract {
# @type it [TesseractOcrConfig]
|it|
# TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:#github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") # 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") # 添加英文
# 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
}
# Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
results = tesseractOcr.analyzeDisplay(display.getId(), nil)
$console.log(results.getText("\n"))
在图片中识别
import com.m8test.script.GlobalVariables._console
import com.m8test.script.GlobalVariables._ocrs
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
val tesseractOcr = _ocrs!!.tesseract {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
setApi("chi_sim+eng", 1)
}
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
val results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
// OcrResults.getText() 用于获取 Ocr 识别结果
_console.log(results.getText("\n"))
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
def tesseractOcr = $ocrs.tesseract {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
}
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
def results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
// OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"))
import com.m8test.ocr.api.OcrResults;
import com.m8test.ocr.api.TesseractOcr;
import com.m8test.ocr.api.TesseractOcrConfig;
import kotlin.jvm.functions.Function1;
import static com.m8test.script.GlobalVariables.$console;
import static com.m8test.script.GlobalVariables.$ocrs;
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
TesseractOcr tesseractOcr = $ocrs.tesseract(new Function1() {
@Override
public Object invoke(Object o) {
TesseractOcrConfig it = (TesseractOcrConfig) o;
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"); // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"); // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1);
return null;
}
});
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
OcrResults results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null);
// OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"));
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
let tesseractOcr = $ocrs.tesseract(function (it) {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") // 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
})
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
let results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
// OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"))
-- Ocrs.tesseract() 用于创建 TesseractOcr 对象
local tesseractOcr = _ocrs:tesseract(function(it)
-- TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:--github.com/tesseract-ocr/tessdata_fast 下载
it:addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") -- 添加中文
it:addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") -- 添加英文
-- 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it:setApi("chi_sim+eng", 1)
end)
-- Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
local results = tesseractOcr:analyzeImage("/sdcard/M8Test/groovy-screenshot.png", nil)
-- OcrResults.getText() 用于获取 Ocr 识别结果
_console:log(results:getText("\n"))
<?php
/** @var m8test_java\com\m8test\script\core\api\console\Console $console */
global $console;
/** @var m8test_java\com\m8test\ocr\api\Ocrs $ocrs */
global $ocrs;
// Ocrs.tesseract() 用于创建 TesseractOcr 对象
$tesseractOcr = $ocrs->tesseract(function ($it) {
// TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https://github.com/tesseract-ocr/tessdata_fast 下载
$it->addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"); // 添加中文
$it->addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"); // 添加英文
// 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
$it->setApi("chi_sim+eng", 1);
});
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
$results = $tesseractOcr->analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null);
// OcrResults.getText() 用于获取 Ocr 识别结果
$console->log($results->getText("\n"));
from m8test_java.com.m8test.script.GlobalVariables import _console
from m8test_java.com.m8test.script.GlobalVariables import _ocrs
# Ocrs.tesseract() 用于创建 TesseractOcr 对象
tesseractOcr = _ocrs.tesseract(lambda it:
# TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:#github.com/tesseract-ocr/tessdata_fast 下载
(it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata"), # 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata"), # 添加英文
# 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)))
# Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", None)
# OcrResults.getText() 用于获取 Ocr 识别结果
_console.log(results.getText("\n"))
java_import "com.m8test.ocr.api.TesseractOcrConfig"
# Ocrs.tesseract() 用于创建 TesseractOcr 对象
tesseractOcr = $ocrs.tesseract {
# @type it [TesseractOcrConfig]
|it|
# TesseractOcrConfig.addTrainedData() 用于添加 Tesseract 训练数据文件, 可以在 https:#github.com/tesseract-ocr/tessdata_fast 下载
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/chi_sim.traineddata") # 添加中文
it.addTrainedData("/sdcard/M8Test/ocr/tesseractdata/eng.traineddata") # 添加英文
# 设置 Tesseract api,指定识别语言和 OCR 引擎模式。
it.setApi("chi_sim+eng", 1)
}
# Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
results = tesseractOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", nil)
# OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"))
Last modified: 08 August 2025