python 题目识别截图切分(有道API接口题目坐标识别、PIL截图)

本人用的是python3.7 ,有道接口帮助文档用有 python2.0获取坐标的demo

主要是ocr获取到题目文字所在区域坐标,再截取。
我们公司也有类似有道这个接口的ocr但是那个不能发,所以只能借用有道的发个列子。算是记录下做过的事情。

案例完整代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @version  : Python 3.7.3
# @Time     : 2019/8/15 17:20

import uuid
import requests
import base64
import hashlib
import time
import json
from PIL import Image

YOUDAO_URL = 'https://openapi.youdao.com/cut_question'
APP_KEY = '有道id'
APP_SECRET = '密钥'

def truncate(q):
    q = bytes.decode(q)
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]

def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()

def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    return requests.post(YOUDAO_URL, data=data, headers=headers)

def connect(imgPath):
    f = open(imgPath, 'rb')  # 二进制方式打开图文件
    q = base64.b64encode(f.read())  # 读取文件内容,转换为base64编码
    f.close()

    data = {}
    data['imageType'] = '1'
    data['q'] = q
    data['docType'] = 'json'
    data['signType'] = 'v3'
    curtime = str(int(time.time()))
    data['curtime'] = curtime
    salt = str(uuid.uuid1())
    signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['salt'] = salt
    data['sign'] = sign

    response = do_request(data)
    result = json.loads(bytes.decode(response.content))
    #print(result)

    for i in range(0, len(result['Result']['regions'])):
        imgsave = imgPath.replace(".jpg","") + "_%d.png"%i
        coordinate = result['Result']['regions'][i]['boundingBox'].split(',')
        coordinate_result = (int(coordinate[0]),int(coordinate[1]),int(coordinate[4]),int(coordinate[5]))
        print(coordinate_result)
        image = Image.open(imgPath)
        region = image.crop(coordinate_result)
        region.save(imgsave)

imgPath = r'F:\studytest\2.jpg'
connect(imgPath)

原图:

在这里插入图片描述

切分截取效果:

在这里插入图片描述
在这里插入图片描述

不发了,就这样。如有问题敬请指点。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hi 你好。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值