Python OCR文本识别:详细步骤与实用代码示例

光学字符识别(OCR)是将图像中的文字转换为可编辑文本的技术。在Python中,我们可以利用多种库实现OCR功能。本文将详细介绍使用Tesseract和EasyOCR进行文本识别的步骤,并提供完整的代码示例。

一、OCR简介

OCR(Optical Character Recognition)技术广泛应用于文档数字化、车牌识别、验证码识别等领域。Python中常用的OCR库有:

  1. Tesseract:Google开源的OCR引擎,支持多种语言
  2. EasyOCR:基于Tesseract的封装库,使用更简单
  3. PaddleOCR:百度飞桨框架下的OCR系统,支持中英文识别

二、环境准备 

1. 安装必要库
 


	# 安装Tesseract(需要先安装系统级依赖)

	# Ubuntu: sudo apt install tesseract-ocr

	# macOS: brew install tesseract

	# Windows: 通过安装包安装

	


	# 安装Python库

	pip install pillow # 图像处理库

	pip install pytesseract # Tesseract的Python封装

	pip install easyocr # EasyOCR库

2. 准备测试图像

准备一张包含清晰文字的测试图片(如test.png),建议:

  • 文字方向为正
  • 背景与文字对比明显
  • 图片分辨率适中(建议300dpi以上)
  • 三、使用Tesseract进行OCR

    1. 基础识别

    
    	from PIL import Image
    
    	import pytesseract
    
    	
    
    
    	# 打开图像文件
    
    	image = Image.open('test.png')
    
    	
    
    
    	# 执行OCR识别
    
    	text = pytesseract.image_to_string(image, lang='eng+chi_sim') # 中英文识别
    
    	
    
    
    	# 打印结果
    
    	print("识别结果:\n", text)

    ​这里插播一条粉丝福利,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新的Python学习资料和学习路线规划(免费分享,记得关注)

    2. 图像预处理(提高识别率)

    
    	import easyocr
    
    	
    
    
    	# 初始化阅读器(首次使用会自动下载模型)
    
    	reader = easyocr.Reader(['ch_sim','en']) # 中英文模型
    
    	
    
    
    	# 执行识别
    
    	results = reader.readtext('test.png', detail=0)
    
    	
    
    
    	# 打印结果
    
    	print("识别结果:\n", results)

    四、使用EasyOCR进行OCR

    1. 基础识别

    
    
    
    	import easyocr
    
    	
    
    
    	# 初始化阅读器(首次使用会自动下载模型)
    
    	reader = easyocr.Reader(['ch_sim','en']) # 中英文模型
    
    	
    
    
    	# 执行识别
    
    	results = reader.readtext('test.png', detail=0)
    
    	
    
    
    	# 打印结果
    
    	print("识别结果:\n", results)

    2. 获取详细识别信息

    
    
    
    	results = reader.readtext('test.png', detail=1)
    
    	
    
    
    	for (bbox, text, prob) in results:
    
    	print(f'文本: {text}, 置信度: {prob:.2f}, 位置: {bbox}')

    五、结果后处理

    
    
    
    	def post_process(text):
    
    	# 去除特殊字符
    
    	text = ''.join(filter(str.isalnum, text))
    
    	
    
    
    	# 替换常见错误
    
    	replacements = {
    
    	'0': 'O',
    
    	'1': 'I',
    
    	'5': 'S',
    
    	'€': 'E'
    
    	}
    
    	
    
    
    	for old, new in replacements.items():
    
    	text = text.replace(old, new)
    
    	
    
    
    	return text
    
    	
    
    
    	# 应用后处理
    
    	final_text = post_process(text)
    
    	print("后处理结果:\n", final_text)

    六、提高识别准确率的技巧

    1. 图像预处理
    2. 调整对比度
    3. 去除噪声
    4. 矫正倾斜文本
    5. 统一文字方向
    6. 参数调整
    7. 尝试不同语言模型组合
    8. 调整识别参数(如psm参数控制页面分割模式)
    9. 使用更强大的模型
    10. 对于复杂场景,可以尝试PaddleOCR等专业OCR系统
    11. 使用深度学习模型进行端到端训练
    12. 多帧识别
    13. 对视频或连续帧进行识别时,可以结合上下文信息进行校正

    七、注意事项

    1. 对于复杂版式(如表格、多列文本),需要先进行版面分析
    2. 手写体识别需要专门的模型(如Tesseract的手写体训练数据)
    3. 识别准确率受图像质量影响较大,建议:
    4. 保证文字清晰可见
    5. 避免反光和阴影
    6. 保持文字方向一致
    7. 对于重要数据,建议人工校验识别结果

    通过本文的介绍,您可以快速掌握Python OCR的基本使用方法。根据具体需求,可以选择合适的OCR库并进行参数调优,以达到最佳的识别效果。对于更复杂的场景,可以考虑结合深度学习技术进行模型优化。

    需要完整源代码以及Python全套学习资料的宝子可以:扫描下方CSDN官方二维码获娶↓↓↓↓↓

    作者:编程咕咕gu-

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python OCR文本识别:详细步骤与实用代码示例

    发表回复