Python3开发快速获取图片的文字

在 Python 3 中,快速获取图片中的文字(OCR) ​ 最成熟、最省事的做法是直接使用 Tesseract OCR 。下面给你一套从零到可用的方案,兼顾速度和准确率。

一、安装依赖

1️、安装 Tesseract OCR

Windows​

下载:https://github.com/UB-Mannheim/tesseract/wiki

安装后记住路径,例如:

复制代码
C:\Program Files\Tesseract-OCR\tesseract.exe

Linux

复制代码
sudo apt install tesseract-ocr

macOS

复制代码
brew install tesseract

验证:

复制代码
tesseract --version

2️、安装 Python 库
复制代码
pip install pytesseract pillow

二、最简示例(5 行代码)

复制代码
import pytesseract
from PIL import Image

text = pytesseract.image_to_string(Image.open("test.png"), lang="chi_sim+eng")
print(text)

✅ 支持:

  • 中文:chi_sim

  • 英文:eng

  • 中英混合:chi_sim+eng


三、中文识别必须做的事

安装中文语言包
  • Windows:安装时勾选 Chinese

Linux:

复制代码
sudo apt install tesseract-ocr-chi-sim

✅ 提高准确率的关键技巧(很重要)

1️、灰度 + 二值化

复制代码
from PIL import Image

img = Image.open("test.png").convert("L")
img = img.point(lambda x: 0 if x < 140 else 255)
print(pytesseract.image_to_string(img))

2️、指定页面分割模式(PSM)

复制代码
custom_config = r'--oem 3 --psm 6'
text = pytesseract.image_to_string(img, config=custom_config)

常用 PSM:

  • 3:自动分页(默认)

  • 6:统一文本块

  • 7:单行文本

  • 11:稀疏文本


3️、Windows 指定 Tesseract 路径

复制代码
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

✅ 批量识别图片

复制代码
import os

for f in os.listdir("images"):
    if f.endswith(".png"):
        text = pytesseract.image_to_string(Image.open(f"images/{f}"))
        print(f, text.strip())

✅ 获取文字位置(做标注 / 审核)

复制代码
data = pytesseract.image_to_data(img, output_type=pytesseract.Output.DICT)
print(data["text"])
print(data["left"])
print(data["top"])
相关推荐
冻柠檬飞冰走茶2 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing032 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
橙橙笔记2 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
雪落漂泊2 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
小小张说故事2 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
波力海苔夹心脆6753 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩3 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
天天被压力4 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力4 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A5 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python