使用 Python 从图片中提取文字是 OCR 驱动类工作流程中广泛应用的技术,比如文档数字化、表单识别、发票处理等场景均会用到。目前仍有大量重要文档仅以扫描件或照片形式存在,因此将视觉信息转换为机器可识别的文字就显得尤为重要。
本文将介绍如何使用 Spire.OCR for Python 提取图片文本,涵盖基础文本提取、带坐标信息提取、批量图片处理等实用功能,并附上最佳实践与常见问题解答,帮助开发者高效落地 OCR 功能。
内容概览:
高效 Python OCR 库
Spire.OCR for Python 是一款功能强大的文本识别库,尤其适用于需要提取结构化排版信息和支持多语言的应用场景。该 Python OCR 引擎具备以下特性:
- 支持提取纯文本及文本块坐标、排版信息
- 兼容多语言识别:英文、简体 / 繁体中文、法语、德语、日语、韩语等
- 支持主流图片格式:JPG、PNG、BMP、GIF、TIFF
- 部署简单、代码简洁,可快速集成至各类 Python 项目
环境配置:安装库与 OCR 模型
在使用 Python 从图片提取文字前,需要先安装 Spire.OCR 库,并下载与操作系统匹配的 OCR 模型文件。
1. 安装 Spire.OCR for Python
使用 pip 命令安装即可:
pip install spire.ocr
2. 下载 OCR 模型包
根据操作系统下载对应的模型文件包:
下载完成后解压文件,后续在 Python 脚本中配置 OCR 引擎时,需指定模型文件的路径。
核心功能实现:Python 提取图片文字
本节将介绍多种使用 Python 提取图片文字的方法,从简单的纯文本提取开始,逐步讲解更高级的结构化识别方式。
基础 OCR 图片文字提取(图片转纯文本)
该示例可直接识别图片内容,输出无格式纯文本并保存至文件:
from spire.ocr import *
# 创建OcrScanner实例,负责进行图片的OCR扫描和文字识别
scanner = OcrScanner()
# 配置OCR模型路径和识别语言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
# 执行OCR扫描,从指定图片文件中识别文本
scanner.Scan(r'示例.png')
# 将识别的文字内容写入文本文件
text = scanner.Text.ToString()
with open('OCR结果.txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')

可选操作:清洗和预处理提取的文字(OCR 后处理)
OCR 识别后的输出结果可能包含空行或无效噪点,以下代码片段可实现文字清洗:
# 清洗提取的文字:移除空行或短行
clean_lines = [line.strip() for line in text.split('\n') if len(line.strip()) > 2]
cleaned_text = '\n'.join(clean_lines)
# 将清洗后的文字保存到新文件
with open('output_clean.txt', 'w', encoding='utf-8') as file:
file.write(cleaned_text)
适用场景:将 OCR 识别结果传入自然语言处理任务或存入数据库前,对结果进行后处理。
提取带坐标信息的图片文字
针对发票、表单、表格等结构化文档,可获取文本块的位置坐标,便于后续数据解析:
from spire.ocr import *
# 创建OcrScanner实例,用于扫描和识别图片中的文本
scanner = OcrScanner()
# 配置OCR模型路径和识别语言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
# 执行文本识别,扫描指定图片文件
scanner.Scan(r'报价单.png')
# 获取识别到的文本内容
text = scanner.Text
# 将每个块的文本及其位置信息添加到列表
results = []
for block in text.Blocks:
results.append(f"文本:{block.Text}")
box = block.Box
results.append(f"坐标:X={box.X}, Y={box.Y}, 宽度={box.Width}, 高度={box.Height}")
results.append("---------")
# 将提取的带坐标的文本保存到txt文件
with open("提取文本与坐标.txt", "w", encoding="utf-8") as f:
f.write('\n'.join(results))
以下是带位置信息的文字块识别结果示例:

批量提取文件夹中的多张图片文本
如需批量处理大量图片,可通过遍历文件夹实现自动化识别:
import os
from spire.ocr import *
def extract_text_from_folder(folder_path, model_path):
scanner = OcrScanner()
config = ConfigureOptions()
config.ModelPath = model_path
config.Language = 'English'
scanner.ConfigureDependencies(config)
# 遍历文件夹图片
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
image_path = os.path.join(folder_path, filename)
scanner.Scan(image_path)
text = scanner.Text.ToString()
# 为每张图片的识别结果单独创建文件保存
output_file = os.path.splitext(filename)[0] + '_output.txt'
with open(output_file, 'w', encoding='utf-8') as f:
f.write(text)
# 调用示例
extract_text_from_folder(r'D:\images', r'D:\OCR\win-x64')
提取图片文本的实际应用场景
- ✅ 财务票据处理:发票、收据、对账单文字识别
- ✅ 证件信息提取:身份证、护照、驾驶证信息数字化
- ✅ 办公文档数字化:扫描件、照片文档转可编辑文本
- ✅ 表单 / 问卷识别:批量提取纸质表单数据
- ✅ 多语言文档检索:外文图片文本快速识别
如果需要从 PDF 文档而非图片中提取文字,你可以参考相关教程:使用 Python 提取 PDF 中的文本内容。
支持的语言与图片格式
Spire.OCR 支持多种语言和丰富的图片格式,可适配更多应用场景。
支持的识别语言
- 英语
- 简体/繁体中文
- 法语
- 德语
- 日语
- 韩语
可以通过 configureOptions.Language 参数设置识别语言。
支持的图片格式
- JPG / JPEG
- PNG
- BMP
- GIF
- TIFF
如何提高 OCR 识别准确率(最佳实践)
要提升 Python 提取图片文字的 OCR 识别效果,可遵循以下技巧:
- 使用高分辨率图片(分辨率≥300DPI)
- 对图片进行灰度化、阈值处理或去噪等预处理操作
- 避免使用倾斜、噪点过多的扫描件
- 保证 OCR 设置的识别语言与图片中的文字语言一致
常见问题解答
从图片中提取文字的最佳 Python OCR 库是什么?
答:Spire.OCR for Python 是一款高性能的 Python OCR 库,具备高准确率的识别效果、多语言支持能力和排版感知的输出特性。该库还能与 Spire.Office 组件无缝协作,实现全自动化处理——比如将提取的文字保存至 Excel、Word 或可检索的 PDF 文件中。当然,也可以根据自身需求,选择开源工具搭建 Python 图片文字提取的项目。
能否识别表格、排版复杂的图片?
答:Spire.OCR 支持提取文本块坐标,可结合坐标信息解析表格、排版结构,适配复杂文档场景。
如何用 Python 从扫描 PDF 中提取文字?
答:可先使用 Spire.PDF for Python 将 PDF 页面转为图片,再通过 Spire.OCR 执行识别,实现扫描 PDF 文本提取。
总结
Spire.OCR for Python 凭借简洁的 API、高效的识别速度和丰富的功能,是 Python 实现图片文字提取的优质选择。无论是单张图片识别、结构化文本提取,还是批量自动化处理,均可快速集成使用,大幅降低 OCR 功能的开发成本。若想解除 Spire.OCR 的使用限制,可以申请免费的临时许可证。







