使用baidu的OCR服务

百度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)

你可能感兴趣的:(编程体验,c#,ocr,dubbo,python)