环境:Python3.7

目录

概念解释

有道智云 API

调用接口的代码

实现批量处理

概念解释

图片翻译:基于文字识别与文本翻译技术,结合组段和渲染技术,满足用户翻译图片文字的需求,提升输入效率。

有道智云 API

想要批量翻译图片,并将翻译内容合并在原图片上,即不改变图片背景,翻译图片中的英文(例如下面两张图),我们可以使用有道智云(当然也有网易有道词典、搜狗、QQ 截图翻译和微信截图翻译,这里面微信截图翻译个人认为效果最好)提供的翻译服务,而不需要知道具体的算法细节(毕竟大厂的翻译算法肯定比自己训练的牛)。

但是当我们有一堆图片需要翻译的时候,一个一个上传到网站上翻译太过繁琐,这时候就可以用到 Python 调用翻译网站提供的服务接口,实现批量图片翻译。有道的图片翻译 API 接口提供有道的图片文字识别翻译服务。只需要通过调用图片翻译 API,传入图片的 Base64 编码,指定源语言与目标语言,通过 POST 请求方式,就可以识别图片中的文字并进行翻译。

调用接口的代码

其实有道智云的技术文档里面已经给出了 Python3 以及其他语言调用接口的示例代码,我们只需要根据自己的需求稍加修改即可。

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import base64
import hashlib
import osfrom imp import reloadreload(sys)YOUDAO_URL = 'https://openapi.youdao.com/ocrtransapi'
APP_KEY = '###########'#自己申请
APP_SECRET = '#############'#自己申请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(file_in):#接口访问参数设置与发送请求f = open(file_in, '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'] = qsalt = str(uuid.uuid1())signStr = APP_KEY + q + salt + APP_SECRETsign = encrypt(signStr)data['appKey'] = APP_KEYdata['salt'] = saltdata['sign'] = signdata['render']=1response = do_request(data)return response

注意想要调用接口还需要获得应用 ID 和应用密钥(获得后替换代码中对应位置),只需要点击下图中的立即使用,注册登录即可,由于翻译服务是需要付费的,大概几分钱一张,不过新用户会赠送 50 元的体验金,那么相当于批量翻译 1w 张以上的图片。

这里需要注意一个参数 render,他表示用户是否需要返回翻译后渲染的图片,默认为否,我们改为 1(是)即可得到翻译后的图片。所有接口调用参数见下图:

调用之后返回的是 json 格式的数据,其中不仅包括图片数据,还有诸多其他的数据(例如图片大小、方向,翻译文字等等),找到其中的图像数据后,将其转变编码后保存到. png 文件中。所有返回参数说明见下表:

字段名 字段说明
orientation 图片所对应的方向
lanFrom ocr 所识别出来认为的图片中的语言
textAngle 图片的倾斜角度
errorCode 错误码
lanTo 目标语言
resRegions 图片翻译的具体内容
-boundingBox 区域范围,四个值:
左上角的 x 值,左上角的 y 值,区域的的宽,区域的高
例如:134,0,1066,249
-linesCount 行数(用于前端排版)
-lineheight 行高
-context 该区域的原文
-linespace 行间距
-tranContent 翻译结果
-lines 当 render=1 即返回渲染图片,返回结果 lines
-color 图片颜色(默认字段,暂不支持修改)
-words 字数组,当 render=1 即返回渲染图片
-text 行识别结果,当 render=1 即返回渲染图片
-word 识别的字的结果,当 render=1 即返回渲染图片
-textHeight 文字的高度,当 render=1 即返回渲染图片

实现批量处理

下面的代码里还有一些读取需要翻译图片的文件夹中的所有图片路径,以及保存翻译后的图片的文件夹路径(自行修改),循环对路径中图片进行翻译和保存,这样就可以实现批量翻译图片啦~

def str_to_png(image_json,file_out):image_str=image_json.encode('ascii')image_byte = base64.b64decode(image_str)with open(file_out,'wb') as f:f.write(image_byte)f.closeif __name__ == '__main__':file_dir1=r'C:\Users\图片\\'#原图片的文件夹file_dir2=r'C:\Users\图片翻译结果\\'#翻译后图片的文件夹paths_tuple=os.walk(file_dir1)#返回三元组,包括路径,文件名for root, dirs, files in paths_tuple:for file in files:split_file=os.path.splitext(file)#拆分成文件名和类型if split_file[1] == '.png':#只处理.png图片file_in=os.path.join(root, file)file_out=os.path.join(file_dir2, file)response=connect(file_in)#调用接口str_to_png(response.json()['render_image'],file_out)#保存图片

Python 批量翻译图片 附详细代码相关推荐

  1. 用Python批量修改图片大小的代码

    可以使用Python的PIL库来实现批量修改图片大小,示例代码如下: from PIL import Image # 加载图片 image = Image.open('filename') #修改图片 ...

  2. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

  3. php实现飘窗,JS实现网站图片飘窗效果,JavaScript悬浮广告(附详细代码)

    原标题:JS实现网站图片飘窗效果,JavaScript悬浮广告(附详细代码) JS实现网站图片飘窗效果,Java悬浮广告,郑州SEO提供以下代码,仅供参考: 飘窗效果-丁光辉博客(www.dinggu ...

  4. python批量裁剪图片_python批量剪切图片实现代码

    例子,python入门实例,python实现图片批量剪切. 代码: 代码示例: #!/usr/bin/python # www.# import os from PIL import Image #批 ...

  5. hfss和python_利用Python与HFSS联合仿真设计一个微带天线(附详细代码)

    原标题:利用Python与HFSS联合仿真设计一个微带天线(附详细代码) 我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便.而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软 ...

  6. python爬取二手房信息_刚刚接触PythonR?教你爬取分析赶集网北京二手房数据(附详细代码)...

    原标题:刚刚接触Python&R?教你爬取分析赶集网北京二手房数据(附详细代码) 源 /数据森麟文 /徐涛 前言: 本文主要分为两部分:Python爬取赶集网北京二手房数据&R对爬取的 ...

  7. python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码)

    python最强实训程序(增删改查)机房收费管理系统-基于tkinter的图形化界面(附详细代码) 最近学校实训,用两天时间做了一个python小程序*机房收费管理系统*,一款基于tkinter使用p ...

  8. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

  9. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

最新文章

  1. 高级图像去雾算法的快速实现。
  2. 使用cpau.exe让不是管理员的用户也有权限运行哪些需要管理员权限的软件。
  3. 动态创建DataTable[转]
  4. 【Todo】Tomcat与Jetty的比较 以及Tomcat架构的学习
  5. qt4 连接mysql_Qt4访问mysql 数据库的简单教程
  6. Centos7搭建Java环境,并设置项目自启动脚本、定时数据库备份/日志清理脚本
  7. JavaScript 几种简单的table切换
  8. 印度软件和中国软件工程师_印度社区如何支持隐私和软件自由
  9. 从入门到入土:基于C语言采用UDP协议实现通信功能的程序
  10. python中dbscan和kmeans_DBSCAN聚类教程及Python示例
  11. Unity 中文不显示问题
  12. 【Mybatis】TKMybatis 介绍和使用
  13. Win10修改用户名及用户文件夹名
  14. 查看linux是多少位
  15. mysql保存微信昵称特殊字符
  16. Elasticseach:从微服务架构演变到大宽表思维的架构转变
  17. CSAPP-Lab05 Cache Lab 深入解析
  18. JVM如何识别“到底谁才是垃圾“?
  19. 初识基于 Web 的可视化编程工具Google Blockly
  20. 开发Garmin佳明手表应用准备工作

热门文章

  1. layer.open的按钮和右上角一个小×,点击事件,执行方法
  2. Linux嵌入式驱动开发零基础入门集合(STM32过渡到Linux嵌入式)
  3. Java--批量短连接生成工具
  4. Python for Data Analysis_2nd_Task 5 之 Pandas 进阶
  5. 南京林业大学计算机专升本,专转本之南京林业大学
  6. 标题创建实体类商品,包含属性:商品名称,商品价格,包含2个属性的构造函数
  7. AS608指纹模块详解
  8. Windows | Tensorfow Softmax Regerssion
  9. 【网络安全】LDAP协议
  10. 游戏建模你必须要掌握的六类软件