# ocr - OCR API服务

为系统提供一个新的OCR服务。

  1. SuperPage的OCR文字识别交互会调用这里提供的扩展服务。
  2. 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条评论
评论