当前位置: 首页 > article >正文

python 图片识别文字

要在 Python 中实现图片中的文字识别,通常使用的是 Tesseract OCR,结合 Pillow 处理图像。以下是一个简易的实现步骤:

1. 安装所需库:

你需要安装以下库:

  • Tesseract OCR 引擎:这是进行文字识别的核心工具。
  • Pillow:用于图像处理的 Python 库。
  • pytesseract:Python 对 Tesseract OCR 引擎的封装。
  • # 安装 Pillow
    pip install Pillow
    
    # 安装 pytesseract
    pip install pytesseract
    
    # 安装 Tesseract OCR 引擎 (系统层面)
    # 对于 MacOS 使用 brew
    brew install tesseract
    
    # 对于 Ubuntu
    sudo apt-get install tesseract-ocr
    
    # 对于 Windows,下载安装包:
    # https://github.com/tesseract-ocr/tesseract/wiki
    
    

    2. Python 代码实现:

    一旦你安装了上述工具,可以编写以下代码来识别图片中的文字。

  • from PIL import Image
    import pytesseract
    
    # 如果你是在 Windows 上,需要设置 Tesseract OCR 安装路径,例如:
    # pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    
    # 打开图片
    image = Image.open('path_to_your_image.jpg')
    
    # 使用 pytesseract 进行 OCR 文字识别
    text = pytesseract.image_to_string(image)
    
    # 输出识别出的文字
    print(text)
    
    3. 可选的图像预处理
    如果图片质量不佳,文字模糊,可能需要对图片进行一些预处理操作,如转为灰度图像、调整对比度等。
    
    python
    复制代码
    from PIL import Image, ImageEnhance, ImageFilter
    
    # 打开图片
    image = Image.open('path_to_your_image.jpg')
    
    # 图像预处理:转换为灰度图像,增强对比度
    image = image.convert('L')
    enhancer = ImageEnhance.Contrast(image)
    image = enhancer.enhance(2)
    
    # 进行 OCR
    text = pytesseract.image_to_string(image)
    
    print(text)
    4. 批量处理图片
    如果你有一组图片需要处理,可以循环处理每一张图片。
    
    python
    复制代码
    import os
    from PIL import Image
    import pytesseract
    
    # 图片文件夹路径
    image_folder = 'path_to_your_image_folder'
    
    # 获取文件夹下所有图片
    for filename in os.listdir(image_folder):
        if filename.endswith(('.png', '.jpg', '.jpeg')):
            img_path = os.path.join(image_folder, filename)
            image = Image.open(img_path)
            text = pytesseract.image_to_string(image)
            print(f"识别图片 {filename} 的文字: \n{text}\n")
    
    
    这个方法可以高效地将图片中的文字提取出来。


http://www.kler.cn/a/298833.html

相关文章:

  • 今日总结 2024-12-24
  • 微调大模型时,如何进行数据预处理? 将<input, output>转换为模型所需的<input_ids, labels, attention_mask>
  • Rust 在前端基建中的使用
  • LeetCode 343.整数拆分
  • 绕组识别标签规范
  • [Unity]Unity集成NuGet-连接mysql时的发现
  • WPS VBA插件使用说明
  • 【GoMate框架案例】讯飞大模型RAG智能问答挑战赛top10 Baseline
  • QWidget(c++)嵌入window环境的exe
  • class 7: vue.js 3 前端工程化
  • 面向 AI 学习者的 Python 快速入门(初学者)
  • 经纬恒润高压电池管理系统,助力新能源汽车飞速发展
  • [Linux]:文件(下)
  • 韩国裸机云站群服务器的特点和使用步骤
  • 如何通过技术手段提高对网络赌博资金流向的监测效率?
  • Linux业务系统将/home目录删除并将空间扩给根目录
  • 简要介绍联合索引
  • SprinBoot+Vue校园部门资料管理系统的设计与实现
  • Git操作和提交规范
  • 【算法专题--回文】最长回文子串 -- 高频面试题(图文详解,小白一看就懂!!)
  • 云曦2024秋季开学考
  • TeamTalk数据库代理服务器
  • SprinBoot+Vue智慧农业专家远程指导系统的设计与实现
  • 【自用21.】C++-this指针
  • pyflink的窗口
  • 5G网络建设