文字识别
from ascript.android.screen import Ocr
从屏幕中 识别文字
方法
谷歌文字识别
谷歌 MLKIT 引擎v2, 速度快,且准确度高. (源码版本:4.0)
- 函数
Ocr.mlkitocr_v2(rect: list = None, pattern: str = None bitmap=None):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| rect | list | 否 | 识别范围 |
| pattern | regx | 否 | 正则匹配 |
| bitmap | str | 否 | 要识别的图片,默认为当前屏幕,如需传入指定图片,请传入Bitmap格式 |
- 返回值
返回值为 OcrText 数组对象
谷歌OCR并不支持 confidence属性!
谷歌OCR,并没有可信度.只要识别到的都是准确的文本.
[
OcrText{
text='应用或小程序D...', #识别到文字
center_x=345, # 文字中心点 在屏幕中的X坐标
center_y=202, # 文字中心点 在屏幕中的Y坐标
rect=[345,202,644,242], # 文字段落 在屏幕中的范围数组
text_box_position=[] # 每一个字的在屏幕中的范围
},
OcrText{text='应用或小程序D...', center_x=345, center_y=202, rect=[345,202,644,242], text_box_position=[]}
]
- 示例
# 谷歌OCR 识别中文,并使用自动分割
from ascript.android.screen import Ocr
res = Ocr.mlkitocr_v2()
if res:
#循环打印识别到的每一个段落
for r in res:
print("文字:",r.text)
print("文字中心坐标:",r.center_x,r.center_y)
print("文字范围:",r.rect)
百度飞桨v2
百度飞桨v2 文字识别引擎 ,速度快,精度中等
- 函数
Ocr.paddleocr_v2(
rect:list=None,
pattern:str=None,
confidence:int=0.1
max_side_len:int=1200,
precision:int=16,
bitmap=None,
file:str=None):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| rect | list | 否 | 圈定屏幕中识别的范围 |
| pattern | str | 否 | 匹配的正则表达式 如保留字符串中包含IT的识别结果:.*IT.* |
| confidence | float | 否 | 识别可信度:默认0.1 |
| max_side_len | str | 否 | 如果指定最大边时,如1200,那么所有输入资源都会同比缩放最大边至1200px,再传入引擎识别 |
| bitmap | str | 否 | 从指定的图片中识别 该Bitmap 可以从Screen.capture()获取 |
| file | str | 否 | 从指定的文件中识别 |
- 返回值
OcrText 对象,可通过 . 获取内部属性.
[
OcrText{
text='应用或小程序D...', #识别到文字
confidence = 0.8111246228218079, # 可信度
center_x=345, # 文字中心点 在屏幕中的X坐标
center_y=202, # 文字中心点 在屏幕中的Y坐标
rect=[345,202,644,242], # 文字段落 在屏幕中的范围数组
text_box_position=[] # 每一个字的在屏幕中的范围
},
OcrText{text='应用或小程序D...', center_x=345, center_y=202, rect=[345,202,644,242], text_box_position=[]}
]
- 示例
# 找到屏幕中的所有文字,保留结果中,包含程序的. 在识别的时候,图片最大边缩放至1600(增加识别速度)
# 导包
from ascript.android.screen import Ocr
res = Ocr().paddleocr_v2(rect=[40,122,714,659],pattern=".*程序.*",max_side_len=1600)
print(res)
if res:
#循环打印识别到的每一个段落
for r in res:
print("文字:",r.text)
print("可信度",r.confidence)
print("文字中心坐标:",r.center_x,r.center_y)
print("文字范围:",r.rect) # 这是一个int数组,可以这样取值 r.rect[0],r.rect[1],r.rect[2],r.rect[3]