手写识别接口以 HTTP POST 方式访问 http://hw.baidu.com , Content-Type
为 application/x-www-form-urlencoded
,POST body 中包含如下 2 个参数:
- type - 总是为 1;
- wd - 为手写笔划矢量数据,格式如下:
- 每条矢量笔划数据都是形如
x1,y1,x2,y2,...
的坐标列表,其中 x 和 y 坐标的有效值范围在 4~209 之间(屏幕坐标系,左上角为原点,向右向下坐标递增),以字符 "a" 作为分隔符将 10 进制坐标数值序列化为字符串。例如一个笔划经过的坐标若为(15,15)-(15,30)
,则该笔划序列化后的字符串为 "15a15a15a30
" ;而另一条笔划经过的坐标若为(15,30)-(30,30)
,则序列化后的字符串为"15a30a30a30
"; - 多条矢量笔划数据字符串之间以 "aa" 分隔后作为最终数据串,例如上述 2 条笔划组成的最终数据串为 "
15a15a15a30aa15a30a30a30
"
- 每条矢量笔划数据都是形如
对应上述笔划数据的完整手写识别请求为:
1 | POST http://hw.baidu.com |
响应体为 JSON 对象,包含如下 2 个字段:
- t - 总是为 1;
- s - 为候选字列表字符串,其中包含 10 个候选字,以 Unicode 转义序列表示
对应上述手写识别请求的响应为:
1 | 200 OK |
经过简单的解码即可知候选字列表为 "L乚cC匕丄上l卜一"。
对此接口进行一些简单的包装即可实现各种在线手写识别应用,不过有没有可能用这个做 OCR?有兴趣的同学可以尝试尝试 😃