使用Tesseract和Python进行OCR和语言翻译

news/2024/9/21 16:43:42

使用Tesseract和Python进行OCR和语言翻译

这篇博客将介绍如何使用Tesseract、Python自动进行OCR和文本翻译。使用textblob,翻译文本就像单个函数调用一样简单。(textblob翻译底层调用translate.google.com会报超时等,用translators库实现翻译)

1. 效果图

原始图如下:包含英文文本
在这里插入图片描述

OCR及翻译效果图如下:
图片中的英文文本被正确识别,然后分别转默认西班牙语,转中文,转德语。
在这里插入图片描述

2. 原理

安装cv2
安装textblob
安装textblob后,需下载textblob用于自动分析文本的自然语言工具包(NLTK)语料库

pip install opencv-contrib-python
pip install -U textblob
python -m textblob.download_corpora

3. tb.translate()翻译报错解决

from textblob import TextBlob #导入TextBlob类——这个类能够自动分析一段文本中的标记、名词短语,甚至是语言翻译。实例化后可以调用TextBlob类的translate()执行自动文本翻译text = u"おはようございます。"
text = 'good morning'
tb = TextBlob(text)
translated = tb.translate(to="zh")
print(translated)

查看tb.translate源码,会发现调用的是translate.google.com接口进行的翻译:

解决办法:https://stackoverflow.com/questions/52455774/googletrans-stopped-working-with-error-nonetype-object-has-no-attribute-group

pip install translators --upgrade

import translators as ts
ts.google(‘שלום’ , to_language = ‘es’)
‘Hola’

在这里插入图片描述

4. 源码

# 用Tesseract对输入的图像进行OCR,然后用textblob翻译文本。
# USAGE
# 支持转的语言:https://developers.google.com/translate/v2/using_rest#language-params
# python ocr_translate.py --image images/comic.jpg
# python ocr_translate.py --image images/comic.jpg --lang de# from textblob import TextBlob #导入TextBlob类——这个类能够自动分析一段文本中的标记、名词短语,甚至是语言翻译。实例化后可以调用TextBlob类的translate()执行自动文本翻译
#
# text = u"おはようございます。"
# text = 'good morning'
# tb = TextBlob(text)
# translated = tb.translate(to="zh")
# print(translated)# 导入必要的包
import argparseimport cv2
import pytesseract
import translators as ts  # 翻译文本
from textblob import TextBlob  # 导入TextBlob类——这个类能够自动分析一段文本中的标记、名词短语,甚至是语言翻译。实例化后可以调用TextBlob类的translate()执行自动文本翻译# 构建命令行参数及解析
# --image 要进行OCR和翻译的输入图像的路径
# --lang 语言,要翻译的语言,默认西班牙语es
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,help="path to input image to be OCR'd")
ap.add_argument("-l", "--lang", type=str, default="es",help="language to translate OCR'd text to (default is Spanish)")
args = vars(ap.parse_args())# 加载输入图像,转换颜色通道
image = cv2.imread(args["image"])
rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 使用Tesseract OCR图像, 由于textblob包不知道如何处理文本中的换行符,所以用空格替换空行
text = pytesseract.image_to_string(rgb)
text = text.replace("\n", " ")# 展示原始OCR的文本
print("ORIGINAL")
print("========")
print(text)
print("")# 翻译文本为另一种语言
# 报错用translators库代替
# tb = TextBlob(text)
# translated = tb.translate(to=args["lang"])# 可以看到默认原始语言from_language是auto自动检测的,然后转的to_langage可设置
# def google_api(self, query_text: str, from_language: str = 'auto', to_language: str = 'en', **kwargs) -> Union[str, list]:
translated = ts.google(text, to_language=args["lang"])# 展示翻译后的文本
print("TRANSLATED")
print("==========")
print(translated)

参考

  • https://pyimagesearch.com/2021/09/20/language-translation-and-ocr-with-tesseract-and-python/
  • 原始图片来源:Explosm漫画生成器

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

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

相关文章

[转]后期-快速消除痘痘,完美修复MM肌肤

是面对美景&#xff0c;即使皮肤不好也得露个脸啊!那MM的面子问题怎么办呢?简单&#xff0c;咱就通过Photoshop后期处理来<?xml:namespace prefix o />给MM打造完美水嫩的肌肤!远景照片 简单还原MM容颜日常拍摄的照片&#xff0c;很多时候是远景的拍摄&#xff0c;人物…

opencv-3

文章目录图像平滑图像金字塔开闭运算形态学操作掩膜模板匹配与霍夫变换灰度直方图边缘检测Canny边缘检测图像平滑 # 图像噪声 ################### # ##椒盐噪声 >>>>>>>>>>>>>>>>>>>>随机出现的白点或黑点# …

使用拼写检查提高Tesseract OCR准确性

使用拼写检查提高Tesseract OCR准确性 上一篇博客介绍了如何使用textblob库和Tesseract自动进行OCR文本&#xff0c;然后将其翻译为其他语言。这篇博客还将通过textblob应用自动拼写检查OCR文本来提高OCR准确性 &#xff08;能够使用textblob纠正拼写错误&#xff0c;纠正单词…

使用Python进行名片OCR(识别姓名,职务,电话,Email邮箱)

上一篇博客介绍了如何通过以下方式自动OCR和扫描收据&#xff1a; 检测输入图像中的接收应用透视变换以获得收据的自顶向下视图利用Tesseract对收据上的文本进行OCR使用正则表达式提取价格数据 这篇博客将介绍如何使用Python对名片进行OCR&#xff0c;从名片中提取姓名、职务…

使用Tesseract和OpenCV构建自动收据扫描仪

使用Tesseract和OpenCV构建自动收据扫描仪 这篇博客将介绍如何使用Tesseract和OpenCV构建自动收据扫描仪。将使用OpenCV构建系统的实际图像处理组件&#xff0c;包括&#xff1a; 检测图像中的收据&#xff08;边缘检测、轮廓检测、基于弧长和近似的轮廓滤波&#xff09;找到…

opencv_角点算法

文章目录harris检测原理Shi_Tomasi算法SIFTFastharris检测原理 import numpy as np import cv2 as cv import matplotlib.pyplot as plt img cv.imread("opencv_3.png") gray cv.cvtColor(img,cv.COLOR_RGB2GRAY) graynp.float32(gray) dstcv.cornerHarris(gray,2,…

opencv算法+人脸检测

文章目录ORB算法视频读写图像人脸识别摄像头实时人脸检测ORB算法 orb算法结合了Fast和Brief算法&#xff0c;提出了构造金字塔&#xff0c;为Fast特征点添加了方向&#xff0c;从而使得关键点具有了尺度不变性和旋转不变性。 # orb算法结合了Fast和Brief算法&#xff0c;提出…

Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决

Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决 1. 安装 python3.7 pip install pytesseract0.1.9 安装tesseract-ocr&#xff08;配置path环境变量或者在代码中指定tesseract_cmd&#xff09; 2.报错及解决…