百度OCR的文字识别还是挺优秀的,就像百度搜索推荐莆田医院一样精准。
1.登录 https://cloud.baidu.com/product/ocr.html
2.按操作指引:点“免费尝鲜”,去领取
创建一个应用,创建完成后,你获得三个东西:Appid, API key,Secret Key
3.程序调用
一. c#开发
开始下载SDK
https://ai.baidu.com/ai-doc/OCR/4kibizycd
如果要简单点,在NuGet中搜索 Baidu.AI,安装最新版即可。
如果手工下载,解压后将 AipSdk.dll 和 Newtonsoft.Json.dll 中添加为引用。
1).新建交互类,这里用到前面创建应用时获得的三个东西
// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";
var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超时时间
2).文字识别
--基本的调用语法
var image = File.ReadAllBytes("图片文件路径");
var result = client.General(image);// 调用通用文字识别(含位置信息版)
var result = client.AccurateBasic(image, options);//高精度识别
--普通识别
public void GeneralBasicDemo() {
var image = File.ReadAllBytes("图片文件路径");
// 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
var result = client.GeneralBasic(image);
Console.WriteLine(result);
// 如果有可选参数
var options = new Dictionary
{"language_type", "CHN_ENG"},
{"detect_direction", "true"},
{"detect_language", "true"},
{"probability", "true"}
};
// 带参数调用通用文字识别, 图片参数为本地图片
result = client.GeneralBasic(image, options);
}
--高精度识别
如果普通识别有很多不能识别的,可以试用高精度识别,基本没有识别不出,非常准确
public void AccurateBasicDemo() {
var image = File.ReadAllBytes("图片文件路径");
// 调用通用文字识别(高精度版),可能会抛出网络等异常,请使用try/catch捕获
var result = client.AccurateBasic(image);
Console.WriteLine(result);
// 如果有可选参数
var options = new Dictionary
{"detect_direction", "true"},
{"probability", "true"}
};
// 带参数调用通用文字识别(高精度版)
result = client.AccurateBasic(image, options);
}
--带文字位置的识别
// 如果有可选参数
var options = new Dictionary
{"recognize_granularity", "big"},
{"language_type", "CHN_ENG"},
{"detect_direction", "true"},
{"detect_language", "true"},
{"vertexes_location", "true"},
{"probability", "true"}
};
// 带参数调用通用文字识别(含位置信息版), 图片参数为本地图片
result = client.General(image, options);
// 带参数调用通用文字识别(含位置高精度版)
result = client.Accurate(image, options);
实际使用中普通识别的准确率和高精度识别差别还挺大,使用普通识别经常出现识别错误的情况,但是使用高精度识别基本没有错的。
二.Python开发
如果已安装pip,执行pip install baidu-aip即可。
如果已安装setuptools,执行python setup.py install即可。
新建一个AipOcr
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
识别
def get_file_content(filePath):
with open(filePath, "rb") as fp:
return fp.read()
image = get_file_content('文件路径')
url = "http://ip/sample.jpg"
pdf_file = get_file_content('文件路径')
# 调用通用文字识别(标准版)
res_image = client.basicGeneral(image)
res_url = client.basicGeneralUrl(url)
res_pdf = client.basicGeneralPdf(pdf_file)