Paddle OCR
模型文件可通过以下链接下载:
请将下图中的四个文件下载至指定目录,然后通过 setModelPath 方法设置模型目录路径。

若使用脚本项目,建议将模型文件放置在 res
目录下。
更多模型信息可参考:
在虚拟屏幕中识别
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.paddle() 用于创建 PaddleOcr 对象
val paddleOcr = _ocrs!!.paddle {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
val screenResults = paddleOcr.analyzeDisplay(display.getId()) {
// 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
set(0, 0, display.getWidth(), display.getHeight())
}
_console.log(screenResults.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.paddle() 用于创建 PaddleOcr 对象
def paddleOcr = $ocrs.paddle {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
def screenResults = paddleOcr.analyzeDisplay(display.getId()) {
// 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it.set(0, 0, display.getWidth(), display.getHeight())
}
$console.log(screenResults.getText("\n"))
import android.graphics.Rect;
import com.m8test.ocr.api.OcrResults;
import com.m8test.ocr.api.PaddleOcr;
import com.m8test.ocr.api.PaddleOcrConfig;
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;
}
});
}
// 获取一个虚拟屏幕
final Display display = getDisplay();
// Ocrs.paddle() 用于创建 PaddleOcr 对象
PaddleOcr paddleOcr = $ocrs.paddle(new Function1() {
@Override
public Object invoke(Object o) {
PaddleOcrConfig it = (PaddleOcrConfig) o;
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/");
return null;
}
});
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
OcrResults screenResults = paddleOcr.analyzeDisplay(display.getId(), new Function1() {
@Override
public Object invoke(Object o) {
Rect it = (Rect) o;
// 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it.set(0, 0, display.getWidth(), display.getHeight());
return null;
}
});
$console.log(screenResults.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.paddle() 用于创建 PaddleOcr 对象
let paddleOcr = $ocrs.paddle(function (it) {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
})
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
let screenResults = paddleOcr.analyzeDisplay(display.getId(), function (it) {
// 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it.set(0, 0, display.getWidth(), display.getHeight())
})
$console.log(screenResults.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.paddle() 用于创建 PaddleOcr 对象
local paddleOcr = _ocrs:paddle(function(it)
-- PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:--github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it:setModelPath("/sdcard/M8Test/ocr/paddleModel/")
end)
-- Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
local screenResults = paddleOcr:analyzeDisplay(display:getId(), function(it)
-- 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it:set(0, 0, display:getWidth(), display:getHeight())
end)
_console:log(screenResults: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.paddle() 用于创建 PaddleOcr 对象
$paddleOcr = $ocrs->paddle(function ($it) {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
$it->setModelPath("/sdcard/M8Test/ocr/paddleModel/");
});
// Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
$screenResults = $paddleOcr->analyzeDisplay($display->getId(), function ($it) use ($display) {
// 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
$it->set(0, 0, $display->getWidth(), $display->getHeight());
});
/** @var m8test_java\com\m8test\script\core\api\console\Console $console */
global $console;
$console->log($screenResults->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.paddle() 用于创建 PaddleOcr 对象
paddleOcr = _ocrs.paddle(lambda it:
# PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:#github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/"))
# Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
screenResults = paddleOcr.analyzeDisplay(display.getId(), lambda it:
# 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it.set(0, 0, display.getWidth(), display.getHeight()))
_console.log(screenResults.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.PaddleOcrConfig'
# Ocrs.paddle() 用于创建 PaddleOcr 对象
paddleOcr = $ocrs.paddle {
# @type it [PaddleOcrConfig]
|it|
# PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:#github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
java_import 'android.graphics.Rect'
# Ocr.analyzeDisplay() 用于分析指定id的虚拟屏幕并获取结果(OcrResults), 第一个参数为虚拟屏幕id, 第二个参数为设置识别区域的函数,如果为null表示分析全屏
screenResults = paddleOcr.analyzeDisplay(display.getId()) {
# @type it [Rect]
|it|
# 设置需要识别的区域, 这里是全屏,如果不设置默认也是全屏
it.set(0, 0, display.getWidth(), display.getHeight())
}
$console.log(screenResults.getText("\n"))
在图片中识别
import com.m8test.script.GlobalVariables._console
import com.m8test.script.GlobalVariables._ocrs
// Ocrs.paddle() 用于创建 PaddleOcr 对象
val paddleOcr = _ocrs!!.paddle {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
val results = paddleOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
// OcrResults.getText() 用于获取 Ocr 识别结果
_console.log(results.getText("\n"))
// Ocrs.paddle() 用于创建 PaddleOcr 对象
def paddleOcr = $ocrs.paddle {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
def results = paddleOcr.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.PaddleOcr;
import com.m8test.ocr.api.PaddleOcrConfig;
import kotlin.jvm.functions.Function1;
import static com.m8test.script.GlobalVariables.$console;
import static com.m8test.script.GlobalVariables.$ocrs;
// Ocrs.paddle() 用于创建 PaddleOcr 对象
PaddleOcr paddleOcr = $ocrs.paddle(new Function1() {
@Override
public Object invoke(Object o) {
PaddleOcrConfig it = (PaddleOcrConfig) o;
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/");
return null;
}
});
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
OcrResults results = paddleOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null);
// OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"));
// Ocrs.paddle() 用于创建 PaddleOcr 对象
let paddleOcr = $ocrs.paddle(function (it) {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
})
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
let results = paddleOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
// OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"))
-- Ocrs.paddle() 用于创建 PaddleOcr 对象
local paddleOcr = _ocrs:paddle(function(it)
-- PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:--github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it:setModelPath("/sdcard/M8Test/ocr/paddleModel/")
end)
-- Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
local results = paddleOcr:analyzeImage("/sdcard/M8Test/groovy-screenshot.png", null)
-- 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.paddle() 用于创建 PaddleOcr 对象
$paddleOcr = $ocrs->paddle(function ($it) {
// PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
$it->setModelPath("/sdcard/M8Test/ocr/paddleModel/");
});
// Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
$results = $paddleOcr->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.paddle() 用于创建 PaddleOcr 对象
paddleOcr = _ocrs.paddle(lambda it:
# PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:#github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/"))
# Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
results = paddleOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", None)
# OcrResults.getText() 用于获取 Ocr 识别结果
_console.log(results.getText("\n"))
java_import "com.m8test.ocr.api.PaddleOcrConfig"
# Ocrs.paddle() 用于创建 PaddleOcr 对象
paddleOcr = $ocrs.paddle {
# @type it [PaddleOcrConfig]
|it|
# PaddleOcrConfig.setModelPath() 用于添加 Paddle 训练数据文件, 可以在 https:#github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 下载
it.setModelPath("/sdcard/M8Test/ocr/paddleModel/")
}
# Ocr.analyzeImage() 用于分析图片并获取结果(OcrResults), 第一个参数为需要分析的图片路径,第二个参数为设置识别区域的函数,如果为null则表示分析整个图片
results = paddleOcr.analyzeImage("/sdcard/M8Test/groovy-screenshot.png", nil)
# OcrResults.getText() 用于获取 Ocr 识别结果
$console.log(results.getText("\n"))
Last modified: 08 August 2025