ocr识别-总结python图片操作

本周使用了百度的OCR图片识别服务,遇到了一些问题,这里总结一下。


其中api中说明识别限制:
1.图片 分辨率不高于4096*4096
2.图片 base64编码后小于4M

超过后,需要重新上传


针对这两个要求做一下图片处理,主要使用python的PIL包
思路主要是:超过限制的就缩小图片分辨率

1.图片 分辨率不高于4096*4096

from PIL import Image

#等比例缩小
def process_image(filename, mwidth=4000, mheight=4000):
    image = Image.open(filename)
    w, h = image.size
    if w <= mwidth and h <= mheight:
        print(filename, 'is OK.')
        return
    if (1.0 * w / mwidth) > (1.0 * h / mheight):
        scale = 1.0 * w / mwidth
        new_im = image.resize((int(w / scale), int(h / scale)), Image.ANTIALIAS)

    else:
        scale = 1.0 * h / mheight
        new_im = image.resize((int(w / scale), int(h / scale)), Image.ANTIALIAS)
    new_im.save(filename)
    new_im.close()


im = Image.open(local_img_path)  
width, length  = im.size[0], im.size[1]
if width > 4096 or length > 4096:
	print('img长宽', width ,length)
	process_image(local_img_path)

2.图片 base64编码后小于4M


def get_file_content(file_path):
    '''
        读取文件内容,file_path可能为图片地址
    :param file_path:
    :return:
    '''
    with open(file_path, 'rb') as fp:
        return fp.read()



    image = get_file_content(local_img_path)
    data = base64.b64encode(image)
    img_limit = 4 * 1024 * 1024

    if len(data) > img_limit:
        print('之前base64字节长度', len(data), "> 4M ")
        process_image(local_img_path,3000,3000)
        image = get_file_content(local_img_path)
        data = base64.b64encode(image)
        print('之后base64字节长度',len(data))

图片操作总结:

  1. PIL提供了通用的图像处理功能,以及大量的基本图像操作,如图像缩放、旋转、颜色转换等。
    基本图像操作和处理(python)

  2. 图片裁剪
    Python实现图片裁剪的两种方式——Pillow和OpenCV

  3. 图片保存本地
    python3中urllib.request模块提供的urlretrieve()函数。urlretrieve()方法直接将远程数据下载到本地。

	import urllib.request as request
	
    local_img_path = 'temp_img.jpg'
    request.urlretrieve(img_url, local_img_path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值