python之OCR文字识别
文章目录
- 法一: 使用easyocr模块
- 法二:通过pytesseract调用tesseract
- 法三:调用百度API
- 方式一: 通过urllib直接调用,替换自己的api_key和secret_key即可
- 方式二:通过HTTP-SDK模块进行调用
法一: 使用easyocr模块
easyocr是基于torch的深度学习模块
easyocr安装后调用过程中出现opencv版本不兼容问题,所以放弃此方案。
法二:通过pytesseract调用tesseract
优点:部署快,轻量级,离线可用,免费
缺点:自带的中文库识别率较低,需要自己建数据进行训练
法三:调用百度API
优点:使用方便,功能强大
缺点:大量使用需要收费
我自己采用的是调用百度API的方式,下面是我的步骤:
注册百度账号,创建OCR应用可以参考其他教程。
购买后使用python调用方法
方式一: 通过urllib直接调用,替换自己的api_key和secret_key即可
# coding=utf-8import sys
import json
import base64# 保证兼容python2以及python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:from urllib.request import urlopenfrom urllib.request import Requestfrom urllib.error import URLErrorfrom urllib.parse import urlencodefrom urllib.parse import quote_plus
else:import urllib2from urllib import quote_plusfrom urllib2 import urlopenfrom urllib2 import Requestfrom urllib2 import URLErrorfrom urllib import urlencode# 防止https证书校验不正确
import ssl
ssl._create_default_https_context = ssl._create_unverified_contextAPI_KEY = 'YsZKG1wha34PlDOPYaIrIIKO'SECRET_KEY = 'HPRZtdOHrdnnETVsZM2Nx7vbDkMfxrkD'OCR_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"""" TOKEN start """
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'"""获取token
"""
def fetch_token():params = {'grant_type': 'client_credentials','client_id': API_KEY,'client_secret': SECRET_KEY}post_data = urlencode(params)if (IS_PY3):post_data = post_data.encode('utf-8')req = Request(TOKEN_URL, post_data)try:f = urlopen(req, timeout=5)result_str = f.read()except URLError as err:print(err)if (IS_PY3):result_str = result_str.decode()result = json.loads(result_str)if ('access_token' in result.keys() and 'scope' in result.keys()):if not 'brain_all_scope' in result['scope'].split(' '):print ('please ensure has check the ability')exit()return result['access_token']else:print ('please overwrite the correct API_KEY and SECRET_KEY')exit()"""读取文件
"""
def read_file(image_path):f = Nonetry:f = open(image_path, 'rb')return f.read()except:print('read image file fail')return Nonefinally:if f:f.close()"""调用远程服务
"""
def request(url, data):req = Request(url, data.encode('utf-8'))has_error = Falsetry:f = urlopen(req)result_str = f.read()if (IS_PY3):result_str = result_str.decode()return result_strexcept URLError as err:print(err)if __name__ == '__main__':# 获取access tokentoken = fetch_token()# 拼接通用文字识别高精度urlimage_url = OCR_URL + "?access_token=" + tokentext = ""# 读取测试图片file_content = read_file('test.jpg')# 调用文字识别服务result = request(image_url, urlencode({'image': base64.b64encode(file_content)}))# 解析返回结果result_json = json.loads(result)print(result_json)for words_result in result_json["words_result"]:text = text + words_result["words"]# 打印文字print(text)
方式二:通过HTTP-SDK模块进行调用
from aip import AipOcr
APP_ID = '25**9878'
API_KEY = 'VGT8y***EBf2O8xNRxyHrPNr'
SECRET_KEY = 'ckDyzG*****N3t0MTgvyYaKUnSl6fSw'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('test.jpg')
res = client.basicGeneral(image)
print(res)
#res = client.basicAccurate(image)
#print(res)
直接识别屏幕指定区域上的文字
from aip import AipOcr
APP_ID = '25**9878'
API_KEY = 'VGT8y***EBf2O8xNRxyHrPNr'
SECRET_KEY = 'ckDyzG*****N3t0MTgvyYaKUnSl6fSw'client = AipOcr(APP_ID,API_KEY,SECRET_KEY)from io import BytesIO
from PIL import ImageGrab
out_buffer = BytesIO()
img = ImageGrab.grab((100,200,300,400))
img.save(out_buffer,format='PNG')
res = client.basicGeneral(out_buffer.getvalue())
print(res)
python之OCR文字识别相关推荐
- 如何使用Python实现图像文字识别OCR
要使用Python实现图像文字识别OCR,可以使用以下步骤: 安装Tesseract OCR引擎 Tesseract是一种开源OCR引擎,可以处理多种语言和字体.要使用Python进行OCR,需要安装 ...
- python常用的OCR文字识别与图片定位方式
python常用的OCR文字识别与图片定位方式 前言 统一版本 更换pip源 1. Python调用百度文字识别ocr的实现方式 1.1 使用PyCharm安装依赖 baidu-aip chardet ...
- python(自动化)利用selenium+百度ocr文字识别验证码实现自动登陆登陆CET-四级报名系统
操作步骤: 1:登陆打开CET-考试系统 2:填写相关登陆信息 3:调用百度ocr实现文字验证码识别 4:实现登陆 如何使用和调用百度ocr文字识别接口 1:进入百度AI开发平台:链接 2:在页面上选 ...
- Python制作简易OCR文字识别系统
前不久看了一篇"如何使用Python检测和识别车牌?"用OpenCV对输入图像进行预处理,用imutils将原始输入图像裁剪成所需的大小,用pytesseract将提取车牌字符转换 ...
- python查找文字在图片中的位置_图片中的文字竟然能如此快速提取?OCR文字识别功能简直太强大了...
想一想你之前如何将线下收集的材料信息采录到线上系统的? 比如作为财务人员,员工凭发票报销费用,但是收集到发票录入信息是需要将发票种类名称.发票代码.纳税人识别号等各种信息录入到系统.你是不是还在一个字 ...
- python图片转文字easyocr_Easy Screen OCR——文字识别转换软件
Easy Screen OCR for Mac(文字识别转换工具)v1.4.0免费版带给大家!Easy Screen OCR文字识别转换工具可以帮助用户快速的获得图片中的文字内容.使用非常简单,只需拖 ...
- Windows下使用Tesseract进行OCR文字识别
Windows下使用Tesseract进行OCR文字识别 Tesseract最初由惠普实验室支持,用于电子版文字识别,1996年被移植到Windows上,1998年进行了C++化,在2005年Tess ...
- OCR文字识别软件的快速任务功能如何用
2019独角兽企业重金招聘Python工程师标准>>> 在使用ABBYY FineReader Pro for Mac OCR文字识别软件处理文档时,经常会执行一系列相同的步骤,如扫 ...
- 对OCR文字识别软件进行自动分析和识别设置的教程
2019独角兽企业重金招聘Python工程师标准>>> ABBYY FineReader 12这款OCR文字识别软件具有着强大的自主功能,在默认情况下,会自动分析并识别 FineRe ...
- 2021-02-21 Python Easyocr 图片文字识别
Python Easyocr 图片文字识别 前段时间做了车牌识别相关的内容分享,参看: 车牌识别(1)-车牌数据集生成 车牌识别(2)-搭建车牌识别模型 今天给大家分享一个简单的OCR文本识别工具:e ...
最新文章
- phpmyadmin底部出现提示“The configuration file now needs a secret passphrase (blowfish_secret). ”...
- 干货!我的计算机网络怎么考了 100 分的?
- python算不算编程_Python 并不适合职场编程
- java随机输出10计算题
- 作者:​徐优俊(1990-),男,北京大学前沿交叉学科研究院博士生。
- C++/C--unordered_map常见用法详解
- Python:序列化
- ExtJs4.2——布局
- 计算机失误,计算机做题的易出现的失误
- 王立平--android事件监听的3种方式
- redis集群原理及搭建
- yylabel支持html ios,iOS_YYLabel实现多标签,文字+背景功能
- Zephyr events
- Neuron segmentation using 3D wavelet integratedencoder–decoder network
- 部分STL_hanhan~
- iphone修改app名称_iPhone6 plus怎么修改图标名字?苹果6 plus设置修改图标名字教程...
- Xilinx 7系列 FPGA CLB资源介绍
- 【复习巩固】OSI七层模型
- JS:页面载入完成时自动提交
- 怎样填写备注是什么意思_手机号备注234824是什么意思什么梗 数字梗意思大全...
热门文章
- Kettle5.4调用Redis
- python 报错: unindent does not match any outer indentation level
- 群晖 VMM虚拟机安装openwrt软路由做单臂旁路由
- linux nas共享存储6,NAS(网络附属存储)技术
- linux修改shell前缀,Linux shell控制台改变显示前缀
- python数据类型转换、将数值转换为以万为单位的数_如何把Excel表格中金额为元的数转换成以万元为单位...
- 图像处理之双线性插值法
- 使用Breed为极路由4增强版(B70-HC5962)刷老毛Padavan固件,配置Nginx代理SSH内网映射
- python游戏计分代码_Python笔试题之设计“跳一跳”小游戏计分器
- CUDA矩阵转置(共享内存 tile)