调用有道API实现图片翻译

news2024/11/8 17:33:13

调用有道API实现图片翻译

  • 1.作者介绍
  • 2.关于理论方面的知识介绍
  • 3.调用有道API实现图片翻译实验
    • 3.1官方代码与结果
    • 3.2解码
    • 3.3换行输出
    • 3.4 示例展示

1.作者介绍

周慧龙,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:2419979656@qq.com

王泽宇,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2717124491@qq.com

2.关于理论方面的知识介绍

API介绍
图片翻译服务,基于文字识别与文本翻译技术,只需要通过调用图片翻译API,传入图片的地址,指定源语言与目标语言,通过POST请求方式,就可以识别图片中的文字并进行翻译。

3.调用有道API实现图片翻译实验

3.1官方代码与结果

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import base64
import hashlib

from imp import reload

reload(sys)

YOUDAO_URL = 'https://openapi.youdao.com/ocrtransapi'
APP_KEY = '*'                             # 应用ID
APP_SECRET = '*'          # 应用密钥


def truncate(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.md5()
    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():
    f = open(r'C:/Users/NO.1/Desktop/28.jpg', 'rb')  # 二进制方式打开图文件
    q = base64.b64encode(f.read()).decode('utf-8')  # 读取文件内容,转换为base64编码
f.close()

    data = {}
    data['from'] = 'en'                              # 图片源语言
    data['to'] = 'zh-CHS'   
    data['type'] = '1'
    data['q'] = q
    salt = str(uuid.uuid1())
    signStr = APP_KEY + q + salt + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['salt'] = salt
data['sign'] = sign

    response = do_request(data)
    results = response.content

print(results)

if __name__ == '__main__':
    connect()

实验结果
在这里插入图片描述
存在问题:图片中的英文成功识别,但是转换成中文后未进行解码

3.2解码

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import base64
import hashlib

from imp import reload

reload(sys)

YOUDAO_URL = 'https://openapi.youdao.com/ocrtransapi'
APP_KEY = '*'                             # 应用ID
APP_SECRET = '*'          # 应用密钥

def truncate(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.md5()
    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():
    f = open(r'C:/Users/NO.1/Desktop/28.jpg', 'rb')  # 二进制方式打开图文件
    q = base64.b64encode(f.read()).decode('utf-8')  # 读取文件内容,转换为base64编码
f.close()

    data = {}
    data['from'] = 'en'                              # 图片源语言
    data['to'] = 'zh-CHS'   
    data['type'] = '1'
    data['q'] = q
    salt = str(uuid.uuid1())
    signStr = APP_KEY + q + salt + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['salt'] = salt
    data['sign'] = sign

    response = do_request(data)
    results = response.content.decode()

print(results)

if __name__ == '__main__':
    connect()

实验结果
在这里插入图片描述
存在问题:可以成功将图片中的英文转换成中文,但是结果太过凌乱,影响读者观看,所以对结果再次处理

3.3换行输出

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import base64
import hashlib
from imp import reload

reload(sys)

YOUDAO_URL = 'https://openapi.youdao.com/ocrtransapi'
APP_KEY = '*'                             # 应用ID
APP_SECRET = '*'          # 应用密钥

def truncate(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.md5()
    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():
    f = open(r'C:/Users/NO.1/Desktop/28.jpg', 'rb')  # 二进制方式打开图文件
    q = base64.b64encode(f.read()).decode('utf-8')  # 读取文件内容,转换为base64编码
f.close()

    data = {}
    data['from'] = 'en'                              # 图片源语言
    data['to'] = 'zh-CHS'   
    data['type'] = '1'
    data['q'] = q
    salt = str(uuid.uuid1())
    signStr = APP_KEY + q + salt + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['salt'] = salt
data['sign'] = sign

    response = do_request(data)
    results = response.content.decode()
    sp1 = results.split('",')
    aticle1 = str(sp1).replace("', '","\"\n")
    sp2 = results.split(',"')
aticle2 = str(sp2).replace("', '","\"\n")

print(aticle2)

if __name__ == '__main__':
    connect()

实验结果
在这里插入图片描述

3.4 示例展示

在这里插入图片描述
对上图进行翻译,翻译结果如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心电图机原理及电路超详细讲解

心电图机原理及电路超详细讲解 心电图主要器件导联单极导联和双极导联威尔逊中心端加压导联胸导联 心电图机的结构电路框图介绍输入部分过压保护电路高频滤波电路低压保护及缓冲放大器屏蔽驱动电路导联选择起搏脉冲抑制与定标电路肌电滤波、时间常数电路、封闭电路与电极异常检…

【OC底层_消息发送与转发机制原理】

文章目录 前言动态类型动态绑定为何为动态语言&#xff1f; 什么是消息传递选择子SELIMPIMP和SEL的关系 消息发送1. 快速查找objc_msgSend()的执行流程objc_msgSend()深基核心逻辑及其参数解析源码解析消息发送的快速查找总结&#xff1a;objc_msgSend(receiver, sel, …)对于b…

接口测试Post请求提交数据的四种类型

常见的post提交数据类型有四种&#xff1a; 第一种&#xff1a;application/json 这是最常见的json格式&#xff0c;也是非常友好的深受小伙伴喜欢的一种&#xff0c;如下 {“input1”:“xxx”,“input2”:“ooo”,“remember”:false} 第二种&#xff1a;application/x-www…

【MySQL实战】笔记

1、MySQL的基本架构组成 MySQL的基本架构组成包括以下几个部分&#xff1a; 连接器&#xff08;Connection Manager&#xff09;&#xff1a;负责与客户端建立连接&#xff0c;并处理客户端发送的请求。连接器会验证客户端的身份、分配线程和缓存等资源&#xff0c;并将请求转…

pdf转excel怎么样格式不乱?这两个方法轻松转换!

PDF和Excel是广泛应用的文件格式&#xff0c;然而&#xff0c;将PDF转换为Excel时&#xff0c;常常面临格式混乱的问题。幸运的是&#xff0c;我们有记灵在线工具和Adobe Acrobat Pro软件这两个简单而有效的方法&#xff0c;可以帮助我们将PDF转换为Excel并保持格式整齐。本文将…

复旦微7045环境安装

Linux Petalinux 0.下载 更换下载源&#xff1a;https://blog.csdn.net/u012308586/article/details/102737950 更换中文&#xff1a;https://cloud.tencent.com/developer/article/2159346 1.配置 配置/bin/sh 由于 petalinux 用到的/bin/sh 命令都是 bash 的&#xff0c…

好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点

作为一款强大易用的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 控制台 控制台是一个 Halo 站点的后台管理系统,只有具有权限…

本周大新闻|visionOS SDK开放下载;Meta和三星停止芯片合作

本周XR大新闻&#xff0c;AR方面&#xff0c;visionOS 1.0系统和SDK发布&#xff1b;Meta和三星停止芯片合作&#xff0c;转而投向联发科&#xff1b;Karl Guttag评Vision Pro第二篇发布&#xff1b;Vision Pro眼球追踪细节。 VR方面&#xff0c;Vision Pro游戏空间边界为3米圆…

在CSDN的第1095天(3年),我收获了什么?

机缘 当初接触CSDN的时候是老师带进来的&#xff0c;那时候说人要有一个记录学习的习惯&#xff0c;可以记录很多东西&#xff0c;在后来看着老师的博客粉丝数和阅读数&#xff0c;哈哈哈&#xff0c;我心动了&#xff0c;于是就加了进来&#xff0c;记录点点滴滴。 于是开始…

使用Docker Swarm部署PXC+HAProxy高可用集群(三节点)

使用Docker Swarm部署PXCHAProxy高可用集群&#xff08;三节点&#xff09; 1. 部署规划 当前规划中&#xff0c;只启动一个HAProxy服务&#xff0c;主要用来做MySQL节点的负载均衡和代理&#xff0c;但是HAProxy可能会出现单点故障&#xff0c;后续需要启动多个HAProxy节点&…

【动态规划算法练习】day5

文章目录 一、309. 最佳买卖股票时机含冷冻期1.题目简介2.解题思路3.代码4.运行结果 二、714. 买卖股票的最佳时机含手续费1.题目简介2.解题思路3.代码4.运行结果 三、123. 买卖股票的最佳时机 III1.题目简介2.解题思路3.代码4.运行结果 四、188. 买卖股票的最佳时机 IV1.题目简…

ES6-Map()对象

Map是一个键值对的集合和Object类似&#xff0c;Object 结构提供了“字符串—值”的对应&#xff0c;Map 结构提供了“值—值”的对应&#xff0c;是一种更完善的 Hash 结构实现。Map做为构造函数&#xff0c;可以通过全局对象获取到需要通过new操作创建实例对象。 map与Objec…

移动端适配方案

文章目录 像素设备像素(物理像素)设备独立像素&#xff08;逻辑像素&#xff09;CSS像素像素之间的关系 分辨率设备分辨率逻辑分辨率 移动端开发分类自适应响应式视口布局视口&#xff08;layout viewport&#xff09;视觉视口&#xff08;visual layout&#xff09;理想视口&a…

数据结构-哈希-位图与布隆过滤器

位图与布隆过滤器 一&#xff0c;位图题目分析位图设计位图代码经典题目 二&#xff0c;布隆过滤器布隆过滤器概念布隆过滤器的插入布隆过滤器的结构布隆过滤器总结经典题目 三&#xff0c;哈希切割 一&#xff0c;位图 题目分析 &#x1f680;给40亿个不重复的无符号整数&am…

【UE 从零开始制作坦克】11-坦克炮塔机枪

效果 步骤 1. 复制一份坦克炮弹的蓝图&#xff0c;重命名为“MachineGunBullets”&#xff0c;作为坦克炮塔机枪子弹的蓝图 2. 打开“MachineGunBullets”&#xff0c;由于美M2勃朗宁重机枪的口径是12.7毫米&#xff0c;这里取12毫米&#xff0c;也就是1.2cm&#xff0c;半径是…

Stream流中Map方法的使用

map函数的作用就是针对管道流中的每一个数据元素进行转换操作。 主要有三种用法 一、Stream管道流map的基础用法 将集合中的每个字符串&#xff0c;全部转化成大写&#xff01; 不使用流 List<String> list Arrays.asList("Monkey", "Lion", &…

你知道免费mp3格式转换器有哪些吗

小明是一个音乐爱好者&#xff0c;经常下载一些高质量的无损音频文件。但他发现有些音频文件格式并不支持他的播放器&#xff0c;这让他很苦恼。有一天&#xff0c;他听说了mp3格式转换器这个神奇的工具&#xff0c;可以将音频文件格式转换成mp3&#xff0c;从而方便他在各种设…

Jetpack Compose:构建现代Android应用的BottomNavigation

Jetpack Compose是Google推出的一种全新的声明式UI框架&#xff0c;它引领了Android开发的新风潮。在这篇博客中&#xff0c;我将详细介绍如何使用Jetpack Compose来构建一个具有底部导航栏&#xff08;BottomNavigation&#xff09;的现代Android应用。 首先&#xff0c;让我们…

【C++学习】内联函数 | nullptr空指针 | 初步认识面向对象 | 类访问限定符 | 封装 | 类对象的内存对齐

写在前面&#xff1a; 上一篇文章我介绍了引用和auto相关的知识&#xff0c; 如果有兴趣的话可以去看看&#xff1a;http://t.csdn.cn/j6jsI 这篇文章大概能够讲完C入门的一些语法&#xff0c;开始类和对象的学习之旅。 目录 写在前面&#xff1a; 1. 内联函数 2. nullp…

用Python带你制作小时候玩的“大富翁”(文末赠书)

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 首先 接下来需要定义各种类型的物业&#xff0c;包括普通物业、铁路、公用事业等等。 接下来需…