You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于pytesseract识别硬币俄文文本无输出的问题求助

问题描述

我用Python的pytesseract库编写了图像转文本脚本,用于识别硬币图片上的俄文文本,已提前加载rus.traineddata训练数据。但识别硬币正反两面图片时控制台无输出;尝试用cv2调整图像颜色后,识别结果完全不符预期。
预期识别结果:

  • 硬币正面:Банк России 10 Рублей
  • 硬币反面:Никто не забыт, ничто не забыто

我的代码:

import pytesseract
from PIL import Image
import cv2
import numpy
avers, revers = ('coinaversTEST.jpeg', 'coinreversTEST.jpeg')
aver = Image.open(avers)
rever = Image.open(revers)
color = cv2.cvtColor(numpy.array(rever), cv2.COLOR_BGR2HSV)
print(pytesseract.image_to_string(color, config='--psm 7 -c tessedit_char_whitelist=0123456789.%',
                                  lang="rus").strip())
解决方案

你的代码存在几个关键问题,直接导致识别失败,以下是针对性修正方案:

1. 字符白名单完全错误

你设置的tessedit_char_whitelist=0123456789.%只允许数字和标点,完全排除了俄文字母,这是识别不出俄文的核心原因。可以直接移除白名单限制,或者添加俄文字母到白名单中,比如:

tessedit_char_whitelist=АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789.,% -

2. PSM模式选择不匹配

--psm 7指定将图像视为单一文本行,但硬币上的文字是多行结构(比如反面的句子分为两行),建议改用--psm 6(将图像视为单一文本块)或--psm 3(默认自动页面分割模式)。

3. 图像预处理逻辑不合理

HSV颜色空间不适合文本识别的预处理,应该采用更有效的流程增强文本与背景的对比度:

  • 转换为灰度图
  • 自适应二值化(解决光照不均问题)
  • 降噪处理

修正后的完整代码

import pytesseract
import cv2
import numpy as np

# 图像预处理函数
def preprocess_image(image_path):
    # 读取图像
    img = cv2.imread(image_path)
    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 自适应二值化,反转黑白让文本为白色
    thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 中值滤波降噪
    denoised = cv2.medianBlur(thresh, 3)
    return denoised

# 硬币图片路径
avers_path = 'coinaversTEST.jpeg'
revers_path = 'coinreversTEST.jpeg'

# 识别硬币正面
processed_avers = preprocess_image(avers_path)
result_avers = pytesseract.image_to_string(processed_avers, lang='rus', config='--psm 6').strip()
print("硬币正面识别结果:", result_avers)

# 识别硬币反面
processed_revers = preprocess_image(revers_path)
result_revers = pytesseract.image_to_string(processed_revers, lang='rus', config='--psm 6').strip()
print("硬币反面识别结果:", result_revers)

额外优化提示

  • 如果硬币图像存在倾斜,可添加旋转校正步骤(通过霍夫变换检测文本行角度)
  • Windows系统需确保指定tesseract路径:pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

内容的提问来源于stack exchange,提问作者Алексндр Босов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:45:22