Skip to content
微信公众号二维码

Bob 官方公众号

文本识别

文本识别插件需要实现以下函数:

  1. 获取支持的语言数组(必须实现)
  2. 执行文字识别(必须实现)
  3. 声明支持位置信息(可选)
  4. 自定义文字识别超时时间(可选)
  5. 自定义验证(可选)

1. 获取支持的语言数组

与文本翻译插件要求相同,点此查看

2. 执行文字识别

javascript
function ocr(query, completion) {
    ...
    ...
    completion({'result': result});
    // or
    completion({'error': error});
}

该函数在每次进行图片识别的时候会被调用。

  • query 参数为 object 类型,用于描述需要识别的图片信息
  • completion 参数为 function 类型,用于识别完成后回调

query

query 参数的结构如下:

属性类型说明
image$data需要识别的图片数据
fromstring目前用户选中的源语言,可能是 auto。查看 语言代码
detectFromstring图片中最可能的语言,一定不是 auto,如果插件不具备检测语言的能力,可直接使用该属性。查看 语言代码
pixelWidthnumber图片像素宽度,可用于将 OCR 服务返回的像素坐标归一化。 Bob 1.20.0+ 可用
pixelHeightnumber图片像素高度,可用于将 OCR 服务返回的像素坐标归一化。 Bob 1.20.0+ 可用

示例:

javascript
{
    'image': $data数据,
    'from': 'auto',
    'detectFrom': 'en',
    'pixelWidth': 1920,
    'pixelHeight': 1080
}

completion

completion 函数的参数为 object 类型,根据不同情况赋值对应属性:

属性类型说明
resultocr result识别成功时,设置该属性。
errorservice error识别错误时,设置该属性。

3. 声明支持位置信息 Bob 1.20.0+ 可用

如果插件的 OCR 服务能够返回文字在图片中的位置信息(boundingBox),可以实现以下函数进行声明。声明后,Bob 会将该插件纳入原图翻译可用的 OCR 服务列表。

js
function supportBoundingBox() {
    return true;
}

声明支持位置信息后,插件在 ocr 函数的返回结果中需要为 ocr text 携带 boundingBox 属性,提供归一化坐标 [0, 1] 的四个顶点。

如果未实现该函数或返回 false,Bob 默认插件不支持位置信息,该插件不会出现在原图翻译的 OCR 服务列表中。

更多关于位置信息和结构化布局的详细说明,请参考这篇博客

4. 自定义文字识别超时时间 Bob 1.6.0+ 可用

Bob 主程序调用插件 ocr 函数的时候,会设定一个超时时间,防止插件出现不回调的情况。

超时时间默认为 60 秒,可自定义为 30 秒到 300 秒之间。不建议将超时时间设置得过长,比较影响用户体验。如无特殊需要,请勿自定义超时时间。

如果需要自定义超时时间,可以实现以下函数:

js
function pluginTimeoutInterval() {
    return 60;
}

5. 自定义验证 Bob 1.6.0+ 可用

如果插件想要在偏好设置显示验证按钮,可以自行实现验证函数。

验证函数的 completion 参数为 function 类型,用于验证完毕之后回调。

completion 的参数为 object 类型,根据不同情况赋值对应属性:

属性类型说明
resultboolean验证是否成功。
errorservice error验证失败时,设置该属性。

注意,error 新增了 troubleshootingLink 属性,可用于验证失败时显示故障排除的链接给用户。

js
function pluginValidate(completion) {
    // 验证成功示例
    completion({ result: true });

    // 验证失败示例
    completion({
        result: false,
        error: {
            type: "secretKey",
            message: "未设置密钥",
            troubleshootingLink: "https://www.google.com"
        }
    });
}