wp231957 发表于 2024-4-10 14:37:24

请问,这段代码哪里有问题呢 运行出错

import pytesseract
from PIL import Image

def extract_text_from_image(image_path):
    # 打开图片
    image = Image.open(image_path)
   
    # 图片文字识别
    text = pytesseract.image_to_string(image, lang='chi_sim')
   
    return text

print(extract_text_from_image("d:\\tmp.jpg"))   

FishC 发表于 2024-4-10 14:37:39

这段代码的运行出错可能是由于缺少Tesseract OCR库引起的。在使用pytesseract之前,您需要安装Tesseract OCR并确保其可访问。

以下是解决该问题的步骤:
1. 安装Tesseract OCR。您可以从Tesseract OCR的官方网站(https://github.com/tesseract-ocr/tesseract)下载并安装适用于您的操作系统的版本。如果您是Windows用户,可以从https://github.com/UB-Mannheim/tesseract/wiki 下载预先编译好的Windows版本。
2. 确保将Tesseract OCR的安装目录添加到环境变量中。这样,您就可以在命令行或终端中直接调用Tesseract OCR。
3. 安装pytesseract。您可以使用pip命令(pip install pytesseract)来安装pytesseract库。

完成上述步骤后,您的代码应该可以正常运行了。如果还有其他问题,请告诉我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 14:50:06

FishC 发表于 2024-4-10 14:37
这段代码的运行出错可能是由于缺少Tesseract OCR库引起的。在使用pytesseract之前,您需要安装Tesseract OC ...

如何能知道 Tesseract OCR是否正确安装呢

我已经下载并安装,并添加到环境变量

但是   下面代码还是无法运行
import pytesseract
from PIL import Image

def extract_text_from_image(image_path):
    # 打开图片
    image = Image.open(image_path)
   
    # 图片文字识别
    text = pytesseract.image_to_string(image, lang='chi_sim')
   
    return text

print(extract_text_from_image("d:\\tmp.jpg"))   

FishC 发表于 2024-4-10 14:50:21

wp231957 发表于 2024-04-10 14:50
如何能知道 Tesseract OCR是否正确安装呢

我已经 ...

要检查Tesseract OCR是否正确安装,您可以尝试在命令行或终端中直接调用Tesseract OCR。在Windows上,您可以按下Win + R键,然后输入"cmd"(不包括引号)来打开命令提示符。在Mac或Linux上,您可以打开终端应用程序。然后,输入"tesseract"命令并按下回车键。如果安装成功,您将看到有关Tesseract OCR的使用说明和选项。

如果您在命令行或终端中无法调用Tesseract OCR,可能是由于环境变量设置不正确。请确保将Tesseract OCR的安装目录正确添加到您的系统环境变量中。

另外,请确保您还安装了必要的Python库。您可以使用以下命令来安装所需的库:
pip install pytesseract
pip install pillow

如果您已经进行了上述步骤,并且命令行或终端中可以正常调用Tesseract OCR,那么问题可能是出在代码中。请检查您的代码是否正确,包括文件路径、文件格式等问题。如果可能,请提供完整的错误信息以便进一步帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:01:13

FishC 发表于 2024-4-10 14:50
要检查Tesseract OCR是否正确安装,您可以尝试在命令行或终端中直接调用Tesseract OCR。在Windows上, ...

pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files\\Tesseract-OCR/tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'chi_sim\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

好像是text = pytesseract.image_to_string(image, lang='chi_sim')   这里的chi_sim有问题
这个东西是干啥的该如何修改

FishC 发表于 2024-4-10 15:01:30

wp231957 发表于 2024-04-10 15:01
pytesseract.pytesseract.TesseractError: (1, 'Error ...

这个错误提示表明Tesseract OCR无法找到所需的语言数据文件。'chi_sim'是Tesseract OCR用于识别简体中文的语言标识符。

要解决这个问题,您可以尝试以下两种方法之一:
1. 指定正确的语言数据文件路径:在使用image_to_string函数时,将语言标识符更改为指向正确的语言数据文件路径。例如,如果您的Tesseract OCR安装目录为"C:\\Program Files\\Tesseract-OCR",则可以使用以下代码:

text = pytesseract.image_to_string(image, lang='chi_sim', config='--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"')

2. 设置TESSDATA_PREFIX环境变量:将TESSDATA_PREFIX环境变量设置为Tesseract OCR的tessdata文件夹路径。在Windows上,您可以打开“环境变量”对话框,添加一个名为TESSDATA_PREFIX的新系统变量,并将其值设置为Tesseract OCR的tessdata文件夹的路径(例如,C:\\Program Files\\Tesseract-OCR\\tessdata)。在代码中不再需要指定语言标识符,因为它将自动从环境变量中获取。

请注意,确保您的Tesseract OCR安装目录和tessdata文件夹路径正确,并根据您的实际情况进行相应的更改。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:14:09

FishC 发表于 2024-4-10 15:01
这个错误提示表明Tesseract OCR无法找到所需的语言数据文件。'chi_sim'是Tesseract OCR用于识别简体中 ...

请问,我设置了系统级别的 环境变量
还用设置ADMINISTRATOR的环境变量吗还是说 设置admin的环境变量   不用设置系统级别的呢

FishC 发表于 2024-4-10 15:14:29

wp231957 发表于 2024-04-10 15:14
请问,我设置了系统级别的 环境变量
还用设置ADMIN ...

一般情况下,设置系统级别的环境变量就足够了。系统级别的环境变量可以被所有用户访问,包括管理员和普通用户。因此,您只需要设置系统级别的TESSDATA_PREFIX环境变量,而无需设置特定于管理员的环境变量。

设置系统级别的环境变量的步骤如下:
1. 打开“系统属性”对话框。您可以使用快捷键Win + Pause/Break键来打开。
2. 点击“高级系统设置”选项卡。
3. 在弹出的窗口中,点击“环境变量”按钮。
4. 在“系统变量”部分,点击“新建”按钮。
5. 输入变量名为TESSDATA_PREFIX,并将变量值设置为Tesseract OCR的tessdata文件夹的路径(例如,C:\Program Files\Tesseract-OCR\tessdata)。
6. 点击“确定”按钮保存设置。

请注意,在更改环境变量之后,您可能需要重启计算机才能使更改生效。

希望这可以帮助到您!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:15:50

FishC 发表于 2024-4-10 15:14
一般情况下,设置系统级别的环境变量就足够了。系统级别的环境变量可以被所有用户访问,包括管理员和普 ...

是的,就是这样操作的,可是还是提示
D:\pige>D:/Python37/python.exe d:/pige/ocr.py
Traceback (most recent call last):
File "d:/pige/ocr.py", line 13, in <module>
    print(extract_text_from_image("d:\\tmp.jpg"))
File "d:/pige/ocr.py", line 9, in extract_text_from_image
    text = pytesseract.image_to_string(image, lang='chi_sim')
File "D:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 427, in image_to_string
    }()
File "D:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 426, in <lambda>
    Output.STRING: lambda: run_and_get_output(*args),
File "D:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 288, in run_and_get_output
    run_tesseract(**kwargs)
File "D:\Python37\lib\site-packages\pytesseract\pytesseract.py", line 264, in run_tesseract
    raise TesseractError(proc.returncode, get_errors(error_string))
pytesseract.pytesseract.TesseractError: (1, 'Error opening data file C:\\Program Files\\Tesseract-OCR\\tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'chi_sim\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

FishC 发表于 2024-4-10 15:16:08

wp231957 发表于 2024-04-10 15:15
是的,就是这样操作的,可是还是提示
D:\pige>D:/Pyt ...

根据错误提示,问题出在无法找到`chi_sim.traineddata`文件。这可能是因为您的TESSDATA_PREFIX环境变量设置不正确,或者缺少相应的语言训练数据文件。请按照以下步骤检查和解决问题:

1. 确保TESSDATA_PREFIX环境变量的值正确设置为Tesseract OCR的`tessdata`文件夹的路径,比如`C:\Program Files\Tesseract-OCR\tessdata`。您可以通过在命令行中运行`echo %TESSDATA_PREFIX%`命令来验证环境变量是否已正确设置。

2. 确认`tessdata`文件夹中包含`chi_sim.traineddata`文件。如果没有,请从Tesseract OCR的官方网站(https://github.com/tesseract-ocr/tessdata)下载适用于简体中文的训练数据,并将其放置在`tessdata`文件夹中。

3. 如果以上步骤都正确,但问题仍然存在,建议您尝试将`lang='chi_sim'`更改为`lang='chi_sim+eng'`,这将使用简体中文和英文的组合语言进行识别。

希望以上解决方法能帮助您解决问题。如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:26:58

FishC 发表于 2024-4-10 15:16
根据错误提示,问题出在无法找到`chi_sim.traineddata`文件。这可能是因为您的TESSDATA_PREFIX环境变量 ...

不错不错
3. 如果以上步骤都正确,但问题仍然存在,建议您尝试将`lang='chi_sim'`更改为`lang='chi_sim+eng'`,这将使用简体中文和英文的组合语言进行识别。

这个可以,难道是我原始图片中没有汉字造成的      

FishC 发表于 2024-4-10 15:27:12

wp231957 发表于 2024-04-10 15:26
不错不错
3. 如果以上步骤都正确,但问题仍然存在, ...

是的,如果您的原始图片中没有汉字,即使配置正确,Tesseract OCR也无法识别汉字。Tesseract OCR是一种用于文字识别的工具,主要用于处理文本内容。如果您的图片中只包含非文字内容,那么识别结果可能会非常有限或为空。请确保您的图片中包含了您期望识别的文字内容,这样才能得到正确的识别结果。如果您想识别其他类型的内容(例如数字、英文等),可以尝试使用相应的训练数据和配置来进行识别。希望这能解决您的问题!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:29:18

FishC 发表于 2024-4-10 15:27
是的,如果您的原始图片中没有汉字,即使配置正确,Tesseract OCR也无法识别汉字。Tesseract OCR是一种 ...

可是,识别出来的误差比较大啊,,这个能解决吗

FishC 发表于 2024-4-10 15:29:41

wp231957 发表于 2024-04-10 15:29
可是,识别出来的误差比较大啊,,这个能解决吗

识别误差的大小通常取决于图片的质量、文字的清晰度以及Tesseract OCR的配置。虽然Tesseract OCR是一种强大的文字识别工具,但在某些情况下,它可能会出现一定程度的误差。

如果您发现识别结果的误差较大,您可以尝试以下方法来改善识别结果:

1. 图片处理:使用图像处理技术,如调整对比度、亮度、锐化等,以提高文字的清晰度和可读性。

2. 语言模型:根据需要,考虑使用更适合您的文字内容的语言模型。Tesseract OCR支持多种语言模型,您可以根据实际情况选择最合适的语言模型进行识别。

3. 字符训练:针对特定领域或字体,您可以通过训练自定义字符集模型来提高识别准确性。这涉及到一些复杂的步骤,包括收集样本、标记字符、训练模型等。但这可以帮助您更好地应对特定场景下的识别问题。

4. 调整识别参数:尝试调整Tesseract OCR的识别参数,例如Page Segmentation Mode(页面分割模式)、OEM(OCR Engine Mode)等,以找到最适合您图片和文字内容的配置。

需要注意的是,完美的识别结果并非总是可行的,特别是当图片质量较差或者文字内容复杂时。因此,在使用OCR工具时,我们需要根据实际需求和实际情况来合理评估并接受一定的误差。

希望以上方法能帮助您改善识别结果。如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-10 15:38:07

FishC 发表于 2024-4-10 15:29
识别误差的大小通常取决于图片的质量、文字的清晰度以及Tesseract OCR的配置。虽然Tesseract OCR是一种 ...

如果用百度的api 呢   会提高识别率吗

FishC 发表于 2024-4-10 15:38:32

wp231957 发表于 2024-04-10 15:38
如果用百度的api 呢   会提高识别率吗

使用百度的OCR API可能会提高识别率,因为百度OCR API是由百度公司开发维护的,具有较高的准确性和可靠性。它采用了先进的深度学习算法,可以处理各种类型的图片,并提供多种语言的文字识别支持。您可以按照以下步骤尝试使用百度OCR API来改善识别结果:1. 注册百度开发者账号并创建一个应用。2. 获取API Key和Secret Key。在百度开发者控制台中,创建一个OCR应用并获取相应的API Key和Secret Key。3. 安装百度AI Python SDK。您可以使用pip命令(pip install baidu-aip)来安装百度AI Python SDK。4. 编写代码。以下是一个使用百度OCR API进行文字识别的示例代码:

from aip import AipOcr

def extract_text_from_image(image_path):
    # 设置API Key和Secret Key
    APP_ID = 'your_app_id'
    API_KEY = 'your_api_key'
    SECRET_KEY = 'your_secret_key'

    # 创建AipOcr对象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    # 读取图片文件
    with open(image_path, 'rb') as f:
      image = f.read()

    # 调用文字识别接口
    result = client.basicGeneral(image)

    # 解析识别结果
    text = ''
    words = result.get('words_result')
    if words:
      for word in words:
            text += word.get('words', '')

    return text

print(extract_text_from_image("d:\\tmp.jpg"))

请替换示例代码中的"your_app_id"、"your_api_key"和"your_secret_key"为您自己应用的相关信息。

通过使用百度OCR API,您可以利用百度强大的OCR技术来提高文字识别的准确性和可靠性。希望这能帮到您!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

zhuxx 发表于 2024-4-11 09:28:58

FishC 发表于 2024-4-10 15:14
一般情况下,设置系统级别的环境变量就足够了。系统级别的环境变量可以被所有用户访问,包括管理员和普 ...

点赞

FishC 发表于 2024-4-11 09:29:07

zhuxx 发表于 2024-04-11 09:28
点赞

感谢您的支持和点赞!如果您有任何其他问题或需要进一步的帮助,请随时向我提问。我会尽力为您解答。祝您编程学习顺利!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

梦梦见岛 发表于 2024-4-11 20:48:23

在运行代码之前,你需要确保已经安装了 pytesseract 库和 PIL 库,并正确配置了 pytesseract 。同时,图像文字识别的准确性可能会受到多种因素的影响,例如图片质量、文字清晰度等。(我也不懂)

wp231957 发表于 2024-4-15 15:24:20

FishC 发表于 2024-4-10 15:38
使用百度的OCR API可能会提高识别率,因为百度OCR API是由百度公司开发维护的,具有较高的准确性和可靠 ...

你是否了解注册百度api 账号获取其密钥   这是收费的还是免费的
页: [1] 2
查看完整版本: 请问,这段代码哪里有问题呢 运行出错