首页 > 其他分享 >使用Tesseract做文字识别(OCR)

使用Tesseract做文字识别(OCR)

时间:2024-01-15 10:34:08浏览次数:27  
标签:gray OCR image cv2 识别 Tesseract

使用Tesseract做文字识别(OCR)

小糊糊 小糊糊 哈尔滨工业大学 计算机科学与技术硕士   39 人赞同了该文章

前言

OCR(optical character recognition,光学字符识别)是指直接将包含文本的图像识别为计算机文字(计算机黑白点阵)的技术。图像中的文本一般为印刷体文本。

Tesseract是github上的OCR开源库,今天我将使用Tesseract来进行文字识别。

安装Tesseract

安装Tesseract挺简单的,直接按照官网上安装方法安装即可。安装完记得配一下环境变量。

Tesseract官网​github.com/tesseract-ocr/tesseract

我是在Win10下安装的,打开命令行,输入tesseract -v查看Tesseract版本号,输出以下信息表示安装成功:

用Tesseract做文字识别

现在我使用Tesseract来识别下面图片中的字符:

命令行运行:(指定简体中文)

 tesseract 5.png stdout -l chi_sim

输出如下:

可以看到,Tesseract很好的识别了图片中的文字。

上面的测试用例背景十分干净,对比明显,Tesseract识别得很好,但是现实中的图片可能没有这么好的条件,直接识别可能会出错,往往要先进行图像处理,然后将处理后的图片送入Tesseract文字识别。

Python中使用Tesseract

Python安装Tesseract接口:

pip install pillow
pip install pytesseract

注意:Python只是提够了调用Tesseract的接口,方便我们在Python程序中使用Tesseract,实际运行的还是前面安装的Tesseract库。

使用以下代码测试:

# USAGE
# python ocr.py --image images/example_01.png 
# python ocr.py --image images/example_02.png  --preprocess blur

# import the necessary packages
from PIL import Image
import pytesseract
import argparse
import cv2
import os

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
	help="path to input image to be OCR'd")
ap.add_argument("-p", "--preprocess", type=str, default="thresh",
	help="type of preprocessing to be done")
args = vars(ap.parse_args())

# load the example image and convert it to grayscale
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cv2.imshow("Image", gray)

# check to see if we should apply thresholding to preprocess the
# image
if args["preprocess"] == "thresh":
	gray = cv2.threshold(gray, 0, 255,
		cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# make a check to see if median blurring should be done to remove
# noise
elif args["preprocess"] == "blur":
	gray = cv2.medianBlur(gray, 3)

# write the grayscale image to disk as a temporary file so we can
# apply OCR to it
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)

# load the image as a PIL/Pillow image, apply OCR, and then delete
# the temporary file
text = pytesseract.image_to_string(Image.open(filename))
os.remove(filename)
print(text)

# show the output images
# cv2.imshow("Image", image)
cv2.imshow("Output", gray)
cv2.waitKey(0)

上面的Python脚本对输入图像先进行了简单的图像处理,比如模糊和二值化。然后将处理后的图片使用tesseract进行文字识别。

测试图片1为:

测试图片1

命令行运行:

python ocr.py --image images/example_01.png

经过阈值分割后的图像如下,可以看到把背景阴影很好的去掉了:

命令行输出如下,正确的识别了结果。

总结

直接使用tesseract识别图片文字容易出错,一般先对图片做图像处理后再使用tesseract识别文字。

标签:gray,OCR,image,cv2,识别,Tesseract
From: https://www.cnblogs.com/sexintercourse/p/17964885

相关文章

  • 摔倒识别摄像机
    摔倒识别摄像机是一种利用人工智能技术和图像识别算法,能够自动识别和报警摔倒行为的安全监控设备。这种摄像机可广泛应用于老年人照料、医疗机构、商场、交通枢纽等场所,对于提高安全防护具有重要意义。摔倒识别摄像机的工作原理是通过摄像头实时捕捉监控区域的画面,再利用深度学习算......
  • 【论文阅读笔记】【OCR-End2End】 TextFormer: A Query-based End-to-End Text Spotte
    TextFormerarXiv:2306.03377读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何设计一种更好的query-based的方法来同时实现端到端的场景文本检测能否利用弱监督数据(只有文本)进一步增强端到端模型的文本识别能力?背景:目前的端到端场景文本检测识别......
  • Text Intelligence - TextIn.com AI时代下的智能文档识别、处理、转换
    一、智能文档处理介绍在AI时代,智能文档处理技术正变得越来越重要。它包括了智能文字识别(OCR)、智能文档信息抽取、文档图像处理以及文档转换等多个方面。这些技术共同构成了现代信息处理的核心,广泛应用于数据分析、自动化办公、数字化存档以及更多其他领域。智能文字识别(OCR)智......
  • 人脸识别系统【从0到1完成一个小项目】【6】【springboot快速上手】
    1.父类在pom.xml里面添加如上代码,有些会自动生成,没有生成的添加一下<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.6</version></parent>......
  • Python手相识别教程6线的通用原则
    6线的通用原则线条不是无缘无故写在手上的,它们来自上天的影响和人类自身的个性。--亚里士多德手部的主要纹路被称为手掌皱纹,在子宫中的第三个月就已完全形成。在胚胎发育成胎儿的关键时刻,有关个人生命的大量信息已经铭刻在手掌上。大脑和手是由相同的干细胞构成的,它们之间的关......
  • Python手相识别教程5拇指
    5拇指拇指是手相术中最重要的部分之一。印度和中国的某些早期手相学派仅凭拇指就能评估一个人的性格和成功机会。拇指是看手相的微缩画布--小小的手指中蕴含着丰富的信息。拇指可以让你一目了然地了解一个人的深刻见解。从字面上看,它就像一幅人物性格的"缩略图"。拇指的大小和......
  • Springcloud智慧工地管理云平台源码 AI智能识别
    智慧工地解决方案一、现状描述 建筑工程建设具有明显的生产规模大宗性与生产场所固定性的特点。建筑企业70%左右的工作都发生在施工现场,施工阶段的现场管理对工程成本、进度、质量及安全等至关重要。同时随着工程建设规模不断扩大,工艺流程纷繁复杂,如何搞好现场施工现场管理,控制......
  • 如何开发医疗保险欺诈识别监测模型中的模型训练与调优?
    医疗保险欺诈识别模型的训练与调优是一个关键的步骤,它直接影响模型的性能。以下是一些建议:1.数据准备与预处理:数据清理:处理缺失值、异常值,确保数据的质量。特征工程:提取有助于欺诈检测的特征,可能需要与领域专家一起进行。数据平衡:处理正负样本不平衡,可以考虑欠采样......
  • 如何开发医疗保险欺诈识别监测模型中的模型选择与构建?
    开发医疗保险欺诈识别监测模型时,选择合适的模型和构建有效的模型是至关重要的。以下是一些建议:模型选择:逻辑回归:适用于线性关系,简单、快速,容易解释。决策树和随机森林:能够处理非线性关系,对异常值和噪声相对鲁棒,易于解释。支持向量机(SVM):在高维空间中表现良好,对于......
  • 如何开发医疗保险欺诈识别监测模型中的特征工程?
    在开发医疗保险欺诈识别监测模型时,特征工程是一个关键的步骤,它有助于提取、转换和选择最相关的特征,以改善模型的性能。以下是在开发医疗保险欺诈识别监测模型时进行特征工程的一些建议:基本特征提取:提取基本的医疗保险相关特征,如就医次数、就医地点、就医科室、医疗费用等。......