关于python:提高图片ocr识别正确率

这个问题其实是上一篇文章的遗留问题。
解决这个问题的方法次要有两个:1.进步图片的清晰度;2.升高辨认的错误率。

1.进步图片的清晰度

上一篇文章中用到的办法是从pdf中读取二进制之后,间接生成image,两头调整图片分辨率的参数。
这里采纳另外一种办法,能够进步图片的清晰度。
上代码:

if __name__ == '__main__':
    pdf = "*****医案选编.pdf"
    doc = fitz.open(pdf)
    pdf_name = os.path.splitext(pdf)[0]

    for pg in range(44,45):
        page = doc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为10,这将为咱们生成分辨率进步100倍的图像。
        # zoom_x, zoom_y = 10, 10
        zoom_x, zoom_y = 2, 2 # 通过测试,2*2的识别率最高。
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pm = page.getPixmap(matrix=trans, alpha=False)
        pm.writePNG('%s.png' % pdf_name)

2.升高谬误识别率

通过下面的步骤,能够失去一个比原来清晰的图片。但实际上,进步还是比拟无限。在筹备放弃的时候,用qq截图辨认了一下,居然比我调用的api要好得多,有点想不通啊,不至于技术差异这么大。起初去翻了一下腾讯的这个辨认服务的技术文档,忽然意识到问题在哪里了。我调用的百度辨认服务是标准版(general_basic),过后没留神,起初特意又查了一下文档,识别率只有91%左右。于是,用百度的高精度版(accurate_basic)api调用试了一下,果然简直没有什么错别字了。然而,这里不得不说一下,百度的api文档没有腾讯的不便。

关上百度的高精度版(accurate_basic)ocr辨认技术文档:

点击API文档-》通用场景文字辨认-》通用文字辨认(高精度版)

找到Python的这段示例代码,红色框中就是高精度版的参数。
上代码,上篇文字的ocr_baidu函数加了一个参数,其实返回值类型都是一样的:

def ocr_baidu(filename, access_token, type="general_basic"):
    # encoding:utf-8
    '''
    通用文字辨认
    '''
    if type == "general_basic":
        request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
    elif type == "accurate_basic":
        request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    # 二进制形式关上图片文件
    f = open(filename, 'rb')
    img = base64.b64encode(f.read())

    params = {"image": img}
    # access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        # print(response.json())
        for words in response.json().get("words_result"):
        #     # print(words.get("words"))
            print(words)
        return response.json().get("words_result")
    else:
        return None

这样下来,识别率进步很多,简直没有错别字了。不过申请的收费调用次数一个月都只有1000次,这一本pdf下来就用了近900次,看来得花钱了。费用来说,百度应该是最贵的,目前是49元5万次,还是首次的优惠价格。

失常价格是5万次1012元,哈哈,用不起啊。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理