安装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
  1. 验证安装
    打开命令提示符或PowerShell,输入tesseract --version,如果安装成功,它会显示Tesseract的版本信息。

代码示例

使用Python语言,结合Pillow库和pytesseract库,识别图片mdf.png中的所有文本,并将每行文本存储在一个字典(Map)中,其中键可以是行号或一个自增的计数器,值为该行的文本内容。以下是相应的代码示例:

首先,确保你已经安装了必要的库,如前所述,通过运行:

pip install pillow pytesseract
  • 1.

接着,使用以下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}")
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.

这段代码首先尝试读取当前路径下的mdf.png图片,然后利用pytesseract.image_to_data方法进行OCR识别,并请求HOCR(HTML Output for OCR)格式的输出。HOCR格式不仅提供了识别出的文字,还包括了它们在图片上的位置信息,这对于按行分割文本特别有用。之后,脚本使用正则表达式解析HOCR输出,提取每一行文本,并存储在一个字典中,其中键是自动递增的行号,值为该行的文本内容。最后,打印出每行的编号和对应文本。