场景描述

图片识别翻译前

图片识别翻译后

第一步引入所需要的库

from PIL import ImageFont

from PIL import Image

from PIL import ImageDraw

import hashlib

from urllib import parse

from urllib import request

import random

import base64

import json

第二步图片文字

识别

ocr(翻译)

文字识别(Optical Character Recognition,OCR),简单讲就是识别出图片中包含的文字信息。由于这是个很深的一个领域(贫道修行尚欠),有兴趣的可以关注下第三方框架openCV,在这里简单通过第三方接口

有道智云

来实现,其他如百度等也都有免费的接口提供。之所以选有道,主要考虑是一般仅支持一个外文翻译为中文,有道智云相对而言多种一起识别,其次直接就帮我翻译成中文了,比较简单直接上代码。

# 替换成您的应用ID

appKey = "29df4hs2342"

# 替换您的应用密钥

appSecret = "9bPJj8Lh7933hlJHGOLJDSocTRh"

# 参数部分

f = open(r'd_4.png', 'rb') # 二进制方式打开图文件

q = base64.b64encode(f.read()) # 读取文件内容,转换为base64编码

q = q.decode('UTF-8', 'strict')

f.close()

# 源语言

fromLan = "en"

# 目标语言

to = "zh-CHS"

# 上传类型

type = "1"

# 随机数,自己随机生成,建议时间戳

salt = random.randint(1, 65536)

# 签名

sign = appKey + q + str(salt) + appSecret

m1 = hashlib.md5()

m1.update(sign.encode("utf8"))

sign = m1.hexdigest()

data = {'appKey': appKey, 'q': q, 'from': fromLan, 'to': to, 'type': type, 'salt': str(salt), 'sign': sign}

data = parse.urlencode(data).encode(encoding='UTF8')

req = request.Request('http://openapi.youdao.com/ocrtransapi', data)

response = request.urlopen(req)

res = response.read()

res = json.loads(res, encoding='utf-8')

resRegions = res['resRegions']

# 输出识别内容

for i in resRegions:

print(i)

第三步根据定位替换图片文字

这一步主要涉及python的PIL库,这个库很强大,主要用于图片的各种处理,可以自行根据python版本进行安装,python2.X和python3.X会有稍微区别。

# 绘制图片

def dw(boundingBox, linesCount, lineheight, tranContent):

# 文本box起点x,y,宽,高

x, y, w, h = boundingBox.split(',')

x = int(x)

y = int(y)

w = int(w)

h = int(h)

# 设置字体字号

word_size = int(lineheight)

word_css = "msyh.ttf"

font = ImageFont.truetype(word_css, word_size)

# 绘制文字

W, H = font.getsize(tranContent) # 文字总长和高

if W > w and int(linesCount) > 1:

word_len = len(tranContent)

r = w / W

limit = int(w / word_size)

i = limit

tranContent = list(tranContent)

while i < word_len:

tranContent.insert(i, '\n')

i += limit + 1

tranContent = ''.join(tranContent)

X = x + w

Y = y + h

# 绘制矩形

draw.rectangle((x, y, X, Y), 'yellowgreen', 'wheat')

draw.text((x, y), tranContent, 'DimGrey', font=font)

if __name__ == "__main__":

im = Image.open('d_4.png')

textAngle = res['textAngle']

imNew = im.rotate(float(textAngle))

draw = ImageDraw.Draw(imNew)

for resRegion in resRegions:

boundingBox = resRegion['boundingBox']

linesCount = resRegion['linesCount']

lineheight = resRegion['lineheight']

tranContent = resRegion['tranContent']

dw(boundingBox, linesCount, lineheight, tranContent)

imNew = imNew.rotate(-float(textAngle))

del draw

# im.save('test.png')

imNew.show()

imNew.close()

小结

以上代码放在一起就可以跑通,代码写的比较稀碎,只是简单实现这么一个图片文字识别翻译的场景,有兴趣的可以自行研究下OCR实现。

python识别图片文字_python实现简单图片文字识别翻译OCR相关推荐

  1. python数据标注工具_python实现简单图片物体标注工具

    本文实例为大家分享了python实现简单图片物体标注工具的具体代码,供大家参考,具体内容如下 # coding: utf-8 """ 物体检测标注小工具 基本思路: 对要 ...

  2. python批量识别图片中文字_python实现中文图片文字识别--OCR about chinese text--tesseract...

    0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: 自带了英文语言包, ...

  3. python文字识别并获取位置_python实现简单的文字识别

    将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).今天我们用到的就是一个OCR 库--Tesseract. 首先要安装Tesseract,除 ...

  4. python识别图片中数字_Python图像处理之图片验证码识别

    在上一篇博客Python图像处理之图片文字识别(OCR)中我们介绍了在Python中如何利用Tesseract软件来识别图片中的英文与中文,本文将具体介绍如何在Python中利用Tesseract软件 ...

  5. python抓取图片数字_Python提取数字图片特征向量 | kTWO-个人博客

    引言 在机器学习中有一种学习叫做手写数字识别,其主要功能就是让机器识别出图片中的数字,其步骤主要包括:图片特征提取.将特征值点阵转化为特征向量.进行模型训练.第一步便是提取图片中的特征提取.数据的预处 ...

  6. python添加图片水印_python 批量添加图片水印

    python程序,用来批量添加图片水印.输入一个文件夹.水印位置(左下角.底部中间.右下角).用户名(用户名是中文的),批量给文件夹里所有的jpg和png图片在指定位置添加水印. 水印内容是:用户名 ...

  7. 入门行人重识别 尝试跑(郑哲东 简单行人重识别代码到88%准确率)过程

    来自郑哲东 简单行人重识别代码到88%准确率 运行代码和参考步骤 试运行-第一部分 prepare.py model.py train.py 试运行-第二部分 test.py 运行代码和参考步骤 代码 ...

  8. java 变换滚动文字_JS实现简单的文字无缝上下滚动功能示例

    本文实例讲述了JS实现简单的文字无缝上下滚动功能.分享给大家供大家参考,具体如下: 文字列表无缝滚动代码 *{ margin:0px; padding:0px; border:0px; } body{ ...

  9. python 识别登陆验证码图片(完整代码)_Python 实现简单图片验证码登录

    如何实现,执行代码报错了 from PIL import Image from pytesseract import image_to_string, pytesseract pytesseract. ...

  10. python切割图片文字_Python+opencv 实现图片文字的分割的方法示例

    Python+opencv 实现图片文字的分割的方法示例 发布时间:2020-08-26 03:28:37 来源:脚本之家 阅读:116 作者:坏小孩90 实现步骤: 1.通过水平投影对图形进行水平分 ...

最新文章

  1. C语言字符型、整型和变量的长度
  2. 广域网域内流量工程优化—Vecloud
  3. tkmybatis 子查询_dnssearch 子域名枚举工具
  4. Oracle之to_char(值,'fm99990.00')
  5. POJ 1936 All in All
  6. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页
  7. 百度HTTPS认证显示“您的站点有链接未通过https检验”的解决办法
  8. 三维空间刚体运动4-5:四元数多点离散数值解插值方法:Sping
  9. 我的技术博客开通了!
  10. 一年级下册计算机教学计划,最新人教版一年级下册教学计划
  11. 微信企业号上传图片 php,C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)...
  12. 从零教你用抖音赚钱——吸粉变现技巧
  13. Pandas二次学习- 回炉重造(进阶)
  14. linux c alarm系统调用入门
  15. 华为或成韩国电信最大5G设备供应商!
  16. CDH 6.3.1 集成Atlas
  17. update多表联合更新
  18. JS中关于正则表达式的一些个人理解
  19. HTML在有序列表方中填充序号,HTML中的有序列表,使用奇数编号
  20. win10安装.NET Framework 3.5的方法

热门文章

  1. 2022-2027年中国洗发水行业市场全景评估及发展战略规划报告
  2. 10款最佳Python开发工具推荐,每一款都是神器!
  3. linux 开启共享文件,文件夹共享权限设置,linux设置文件夹权限-
  4. 脑机直播 x 赛博驱魔!瑞云专访揭秘胶囊计划国风科幻神作《终极体验》制作幕后...
  5. ps证件照换底色(红/蓝/其他颜色都可)
  6. PS换照片底色(三种方式)
  7. 怎样自学3D建模?能学会吗?
  8. c语言实现 三角函数,小型嵌入式系统的三角函数C实现
  9. WORD中插入三线制表格
  10. 手足之爱,平生一人:他们是中国历史上感情最好的一对兄弟 (苏轼苏辙,邓林武邓林飞)