# ocr - OCR API服务
为系统提供一个新的OCR服务。
- SuperPage的OCR文字识别交互会调用这里提供的扩展服务。
- OCR扩展安装后还需在系统设置中进行相应的设置才能使用
# 扩展文件结构
/
├──package.json //定义扩展的配置信息
├──main.action.ts //后端代码,提供后端的脚本逻辑
├──main.action //main.action.ts编译后产生的文件
└──thumbnail.png //缩略图
# package.json
示例如下(复制时注意要把json中的注释删除):
{
"name": "template-ocr-blank",
"displayName": "xxxxOCR服务",
"description": "提供OCR文字识别服务",
"version": "1.0.0",
"compatibilities": {
"platform": "^4.0.0"
},
"author": {
"name": "YourName",
"email": "name@xxx.com",
"homePage": "https://www.succez.com/"
},
"categories": [
"other"
],
"main": "main",
"contributes": {
"auxInput": [
{
"id": "baidu",
"caption": "百度OCR",
"desc": "...",
"compatibilities": [
"pc"
],
"type": "ocr",
"scenarios": [
{
"id": "idcard",
"caption": "身份证",
"fields": [
"身份证号",
"姓名",
"性别"
]
},
{
"id": "drivecard",
"caption": "驾照",
"fields": [
"驾照号",
"姓名",
"性别"
]
}
],
"settings": [
{
"id": "apikey",
"name": "apikey",
"formItemType": "edit"
},
{
"id": "secretkey",
"name": "secretkey",
"formItemType": "edit"
}
]
}
]
}
}
# main.action.ts
main.action.ts是后端脚本文件,主要用于OCR识别,示例如下:
import { File } from "svr-api/fs";
import * as http from "svr-api/http";
import * as security from "svr-api/security";
import { getCachedValue, putCachedValue } from "svr-api/memcache";
/**
* 前端用户请求ocr识别后会执行此函数。
*
* 实现思路:
* 1. 调用互联网OCR识别服务:根据参数调用互联网服务(如百度AI)实现OCR识别。
* 2. 调用本地API,或本地可执行程序。
*
* @param args
* @returns 返回识别结果,如果识别失败抛出异常
*/
function ocr(args: {
/**系统设置中的设置项 */
settings: JSONObject,
/**ocr服务的id,即package.json中配置的ocr扩展点的id。当一个扩展实现多个orc扩展点的时候可以使用此参数进行扩展点的区分 */
serviceId: string,
/**识别场景,比如idcard */
scenario: string,
/**图片文件,`image.readBase64()`可返回图片文件的base64编码 */
file: File,
}): AUXInputResultInfo {
let access_token = getCachedValue("xxx_access_token");
if (!access_token) {
// TODO 此处获取access_token
// 将access_token缓存下来,下次可以复用,提升性能
putCachedValue("xxx_access_token", access_token, 20);
}
// TODO 调用远程api识别并返回识别内容
const resultInfo: AUXInputResultInfo = { errorCode: 'success', value: '', fields: {} };
// TODO 处理识别结果
return resultInfo;
}
0条评论
评论