安装Tesseract
Tesseract是一个开源的OCR引擎,可以非常高效地将图片中的文本转换为可编辑的文本格式。为了在Python中使用pytesseract
库,你需要先在你的系统上安装Tesseract OCR。
安装Tesseract OCR步骤:
- 下载Tesseract OCR:
访问Tesseract OCR的GitHub Release页面或直接访问其官方网站,下载适合你操作系统的安装包。对于Windows用户,通常可以选择一个.exe
安装文件。
或者访问如下网址进行下载:
https://digi.bib.uni-mannheim.de/tesseract/
-
安装:
双击下载的安装包并按照提示进行安装。默认情况下,它可能会安装到类似C:\Program Files\Tesseract-OCR
的路径下。 -
配置环境变量(可选但推荐):
为了在任何路径下都能方便地调用tesseract.exe
,你需要将Tesseract的安装路径添加到系统的PATH环境变量中。这可以通过以下步骤完成:- 右键点击“此电脑”或“我的电脑”,选择“属性”。
- 点击“高级系统设置”。
- 在“系统属性”窗口中点击“环境变量”按钮。
- 在“系统变量”区域找到并选择“Path”,然后点击“编辑”。
- 点击“新建”,然后输入Tesseract的安装路径,通常是
C:\Program Files\Tesseract-OCR
。
-
验证安装:
打开命令提示符或PowerShell,输入tesseract --version
,如果安装成功,它会显示Tesseract的版本信息。
代码示例
使用Python语言,结合Pillow库和pytesseract库,识别图片mdf.png
中的所有文本,并将每行文本存储在一个字典(Map)中,其中键可以是行号或一个自增的计数器,值为该行的文本内容。以下是相应的代码示例:
首先,确保你已经安装了必要的库,如前所述,通过运行:
pip install pillow pytesseract
接着,使用以下Python脚本:
from PIL import Image
import pytesseract
import re
def ocr_image_to_map(image_path):
"""
识别图片中的所有文本,并将每行文本存储到一个字典中。
"""
# 设置tesseract的路径(如果尚未在环境变量中配置)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 根据你的安装位置调整
# 打开图片
img = Image.open(image_path)
# 使用pytesseract进行OCR识别,同时获取文字框信息以便按行分割
hocr_text = pytesseract.image_to_data(img, output_type=pytesseract.Output.HOCR)
# 解析HOCR输出,提取每一行文本及其位置信息
lines = {}
line_pattern = re.compile(r'<span.*?id="line_(\d+).*?>(.*?)</span>', re.DOTALL)
matches = line_pattern.findall(hocr_text)
for line_number, line_text in matches:
# 清理文本,去除多余空白和特殊字符
clean_line_text = re.sub(r'\s+', ' ', line_text).strip()
lines[int(line_number)] = clean_line_text
return lines
if __name__ == "__main__":
image_path = 'mdf.png' # 假设图片与脚本位于同一目录下
all_text_lines = ocr_image_to_map(image_path)
for line_num, text in all_text_lines.items():
print(f"Line {line_num}: {text}")
这段代码首先尝试读取当前路径下的mdf.png
图片,然后利用pytesseract.image_to_data
方法进行OCR识别,并请求HOCR(HTML Output for OCR)格式的输出。HOCR格式不仅提供了识别出的文字,还包括了它们在图片上的位置信息,这对于按行分割文本特别有用。之后,脚本使用正则表达式解析HOCR输出,提取每一行文本,并存储在一个字典中,其中键是自动递增的行号,值为该行的文本内容。最后,打印出每行的编号和对应文本。