python 图片识别_python识别图片文字

滑稽研究所 9ac0640c454ef17421504d87a77eaa2c.gif

python识别图片文字

哈喽,大家好呀,我是滑稽君。大家在写论文时可能经常碰到无法复制文字的文章。明明找到了需要的内容却无法直接复制使用,这让我们十分苦恼。那么本期滑稽君就告诉大家如何使用python识别图片中的文字。

滑稽君整理了网上使用率最高的两种方法。

一是pytesseract+Tessseract-OCR进行图片识别。

二是调用百度文字识别提供的API进行图片文字的处理。

下面我将告诉大家这两种方法一些容易跳坑的地方。

0363fa8c193875d44cd78897bca91008.gif

视频讲解:

7156adc90916e45aa81ee9ca664c435d.gif ❂ pytesseract+Tessseract-OCR

第一种方法需要注意的地方是一些第三方库的下载,我们需要用到pytesseract库和pillow库,这两个库我们都可以在cmd中直接pip下载,需要注意的是我们还需额外下载一个文件——tesseract-ocr。下载这个文件之后我们直接安装注意不要修改他的默认路径(大神忽略)。一些小伙伴可能需要配置一下环境路径,滑稽君安装之后它自动帮我添加了,大家注意一下即可。

下载链接:

https://pan.baidu.com/s/1OL0g1MBzeijD23JN0UGC0Q

这个工具默认支持英文,我们需要下载支持中文的包,然后放在这个目录下。C:\Program Files (x86)\Tesseract-OCR\tessdata  里面已经有了支持英文的包是eng开头的,我们放入的支持中文的包是chi_sim开头的意思是中文简体。

接着我们需要在这个目录下找到图片中的最后一个文件,打开文件(用记事本即可)找到如图所示位置后进行如下修改。这个路径一般是通用的,这也是一开始为什么不修改默认路径的原因。当我们准备工作都完成后代码部分就比较简单了。

131e778edade853ca7e4d31264292254.png

27ec61e47ff8919b3355dd7b096964ca.png

源代码:

import pytesseractfrom PIL import Image pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-OCR\tesseract.exe"text = pytesseract.image_to_string(Image.open('C:\\Users\\86157\\pysw.png'),lang="eng")#识别英文参数为  lang="eng"  中文为lang="chi_sim"   如果参数不对识别就会乱码。# 创建一个txt文件,文件名为mytxtfile,并向文件写入msgdef text_create(name, msg):    desktop_path = "C:\\Users\\86157\\Desktop\\"  # 新创建的txt文件的存放路径    full_path = desktop_path + name + '.txt'  # 也可以创建一个.doc的word文档    file = open(full_path, 'w')    file.write(msg)   #msg也就是下面的Hello world!    file.close()    text_create('saveworld',text)
❂ 调用百度文字识别提供的API

这个方法主要是使用百度文字识别提供的API接口,来完成对图片文字的识别。需要用到baidu-api这个第三方库,cmd中可以直接pip安装。我们需要去百度云免费申请一个百度云文字识别api的接口,获得你自己的APP_ID,API_KEY,SECRET_KEY。

源代码:

#-*- coding: UTF-8 -*-#前提是python已安装aip库--》pip install baidu-aip import osfrom aip import AipOcrimport jsonAPP_ID = '' #你的APP_IDAPI_KEY = '' #你的API_KEYSECRET_KEY = ''  #你的SECRET_KEYaipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)os.chdir("")  #你需要转换的图片目录,大家自行替换。dirs = os.listdir()def get_file_content(filePath):    with open(filePath, 'rb') as fp:        return fp.read()options = {}options["language_type"] = "CHN_ENG"options["detect_direction"] = "true"options["detect_language"] = "true"options["probability"] = "true" print('开始处理,共'+str(len(dirs))+"张图片。")flag=0T = 0 #统计处理图片成功的数量for filePath in dirs:    if filePath.split('.')[-1]=='txt':continue    flag+=1    print('正在处理第'+str(flag)+'张图片')    try:        result = aipOcr.basicGeneral(get_file_content(filePath), options)    except BaseException as e:        print(e)    else:        try:            with open(filePath.split('.')[0]+'.txt','w',encoding='utf-8') as f:                for i in result['words_result']:                        f.write(i['words']+'\n')                T += 1        except BaseException as e :            print(e)        else:            print('处理完成')print('{}全部处理完成!{}'.format("="*30,"="*30))print('处理成功的图片有{}张,处理失败的图片有{}张'.format(T,len(dirs)-T))

效果图:

方法一:左边为滑稽君自制的图片,右边为识别之后转txt的效果。

可以看到中文识别正确率还说一点低的。英文识别的效果倒是还可以没有出现错误的情况,这里就不展示了。

1402c166943854a954171ee6a0b45890.png

方法二:左边为滑稽君自制的图片,右边为识别之后转txt的效果。

d9b68f8a050c8ffa76d6b41b80ed4f8b.png

可以看到第一种方法对图片中文字的识别准确率较第二种要差很多,特别是在中文的识别上。因此大家日常使用的话还是推荐第二种方法,还有就是下载安装文件和配置环境变量对小白来说不是那么友好。

第一种方法识别图片中文字,如果图片里有中英混杂的情况,就只能识别一种语言。而调用百度文字API的方法可以英文、中文、数字混合在一张图里识别,并且准确率高。前者可以单机识别,后者则是要求网络的。

本期素材来源:

https://blog.csdn.net/zhangshaohua1603/article/details/79722399https://blog.csdn.net/L141210113/article/details/88835914?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare
fe427460ecd7894579fe1d0be31b2a08.gif ❂ END

两种方法都为大家整理完毕了,有什么问题欢迎私信滑稽君。

aefebd483a058a8519fc2ced421dd58b.png
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值