使用Tesseract和Python进行OCR和语言翻译
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Tesseract和Python进行OCR和语言翻译相关的知识,希望对你有一定的参考价值。
使用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接口进行的翻译:
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 argparse
import 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漫画生成器
以上是关于使用Tesseract和Python进行OCR和语言翻译的主要内容,如果未能解决你的问题,请参考以下文章
文本的检测识别实战:使用 Tesseract 进行 OpenCV OCR 和文本识别
Python:在使用 python tesseract API 接口时遇到 OCR 问题
Python+OpenCV+Tesseract实现OCR字符识别
Python中利用Tesseract软件来识别图片中的英文与中文