分享

使用Python进行OCR图像识别只需要四行代码

 北方的白桦林 2023-10-10 发布于广东

效率 . 创新

Python OCR图片识别

Python让工作更简单

Python OCR图片识别 OCR picture recognition

作为一门成熟的编程语言,Python自然可以实现OCR识别功能,今天给大家介绍一种最简单的实现方式:EasyOCREasyOCR名字中的“easy”一点也不夸张,相信在阅读完笔者今天的介绍以后,你会感叹:OCR图片识别竟然可以如此简单!EasyOCR具有以下特性:
1. 简单
2. 免费
3. 支持识别多种语言
但同时EasyOCR也有以下缺点:
1. 文件路径不支持中文
2. 识别精确度有限

目录

  • 1. 准备工作:安装第三方库

  • 2. 简单实战-提取发票的发票号

  • 3. 进阶-提取文件夹下所有发票号


1. 准备工作:安装第三方库

EasyOCR库依赖于第三方机器学习库,因此要同时安装机器学习相关库torchvisioneasyocr

  • 1.torchvision:基于pytorch的图像处理库
  • 2.easyocr:OCR识别库
pip install torchvision -i https://mirrors.aliyun.com/pypi/simple/
pip install easyocr -i https://mirrors.aliyun.com/pypi/simple/

此外,需要注意的是,这里的OCR识别底层逻辑需要用到numpy库,并且对numpy库的版本有一定要求(<1.23.0,>=1.16.5),假设我们这里安装1.22.0版本的numpy:

pip uninstall numpy #如果安装过需要先卸载之前安装的
pip install numpy==1.22.0 -i https://mirrors.aliyun.com/pypi/simple/

2. 简单实战-提取发票的发票号

首先,我们做个简单的实战——提取一张发票的发票号。

假设我们想要提取如下图所示发票(invoice1)的发票号:图片

相关代码如下:

import easyocr
import re
reader = easyocr.Reader(['ch_sim''en'], gpu=False)
results = reader.readtext('G:\gzh-ocr\invoice1.jpg', detail=0)   #detail 数值越高信息越详细。
pattern = r'\d+'  # 定义正则表达式
print('发票号:', re.findall(pattern, results[3])[0])

运行结果如下:图片

代码只有惊人的短短四行,就把发票号成功识别了出来!

3. 进阶-提取文件夹下所有发票号

我们做个进阶的实战案例——自动提取指定文件夹下所有发票图片中的发票号。

我们在G盘下的”gzh-ocr”文件夹中有两张发票,图片名称分别是invoice1.jpg和invoice2.jpg(这里是由于素材获取难度大,只放了两张图片,其实我们的程序十分强大,放多少张都能自动全部进行识别提取)。相关素材如下图所示:图片invoice1:图片invoice2:图片

完整代码如下:

import easyocr
import re
from pathlib import Path
reader = easyocr.Reader(['ch_sim''en'], gpu=False)
for f in Path('G:\gzh-ocr').rglob('*.*'):
    if f.suffix.lower() in ['.jpg''.png']:
        results = reader.readtext(str(f), detail=0)   #detail 数值越高信息越详细。
        pattern = r'\d+' # 定义正则表达式
        print('发票名:',f.stem,'发票号:',re.findall(pattern, results[3])[0])

运行结果如下:图片

可以看到,我们'G:\gzh-ocr'文件夹下的所有发票中的发票号都被成功提取了出来,并且程序十分贴心的加上了发票名!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多