Bootstrap

Python OCR图片识别代码示例:Tesseract 的安装及pytesseract提取图片文本内容

安装Tesseract

Tesseract是一个开源的OCR引擎,可以非常高效地将图片中的文本转换为可编辑的文本格式。为了在Python中使用pytesseract库,你需要先在你的系统上安装Tesseract OCR。

安装Tesseract OCR步骤:

  1. 下载Tesseract OCR
    访问Tesseract OCR的GitHub Release页面或直接访问其官方网站,下载适合你操作系统的安装包。对于Windows用户,通常可以选择一个.exe安装文件。

或者访问如下网址进行下载:
https://digi.bib.uni-mannheim.de/tesseract/

  1. 安装
    双击下载的安装包并按照提示进行安装。默认情况下,它可能会安装到类似C:\Program Files\Tesseract-OCR的路径下。

  2. 配置环境变量(可选但推荐):
    为了在任何路径下都能方便地调用tesseract.exe,你需要将Tesseract的安装路径添加到系统的PATH环境变量中。这可以通过以下步骤完成:

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 点击“高级系统设置”。
    • 在“系统属性”窗口中点击“环境变量”按钮。
    • 在“系统变量”区域找到并选择“Path”,然后点击“编辑”。
    • 点击“新建”,然后输入Tesseract的安装路径,通常是C:\Program Files\Tesseract-OCR
  3. 验证安装
    打开命令提示符或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输出,提取每一行文本,并存储在一个字典中,其中键是自动递增的行号,值为该行的文本内容。最后,打印出每行的编号和对应文本。

;