我想遍历文件夹中的每个.png文件并打印图像中包含的每个文本。第一次迭代工作正常,但第二次迭代出现错误。
代码:
import pytesseract
from PIL import Image
import os
directory = (r'C:\folder...')
for filename in os.listdir(directory):
if filename.endswith('.png'):
Image = Image.open(filename)
im = pytesseract.image_to_string(Image)
print(im)
输出:
回溯(最近通话最近):文件 “ C:\ Users \ Artur \ Desktop \ Pytesseract_test.py”,第9行,在 图片= Image.open(文件名)AttributeError:'PngImageFile'对象没有属性'open'
“ PngImageFile”对象没有属性“ open”是什么意思? Image = Image.open(filename)
不能做到这一点吗?
预先感谢
编辑:
最初的PngError问题已解决,但现在发生了另一个PIL库错误:
import pytesseract
from PIL import Image
import os
directory = (r'C:\folder...')
for filename in os.listdir(directory):
if filename.endswith('.png'):
img = Image.open(filename)
im = pytesseract.image_to_string(img)
print(im)
输出:(然后是'frame_0000.png'的ocr是正确的)
Traceback (most recent call last):
File "C:\Users\Artur\Desktop\Pytesseract_test.py", line 9, in <module>
img = Image.open(filename)
File "C:\Users\Artur\AppData\Local\Programs\Python\Python36\lib\site-packages\PIL\Image.py", line 2580, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'frame_0001.png'
Edit2:
这很奇怪。当我这样做时:
for filename in os.listdir(r'folderpath...'):
print(filename)
它工作得很好,遍历每个文件,打印每个文件名。
但是当我这样做时:
for filename in os.listdir(r'folderpath...'):
print(filename)
print(pytesseract.image_to_string(Image.open(filename)))
给出错误:
Bewegung_UHF_Plots.m
Traceback (most recent call last):
File "C:\Users\Artur\Desktop\Pytesseract_test.py", line 19, in <module>
print(pytesseract.image_to_string(Image.open(filename)))
File "C:\Users\Artur\AppData\Local\Programs\Python\Python36\lib\site-packages\PIL\Image.py", line 2580, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'Bewegung_UHF_Plots.m'
答案 0 :(得分:3)
将变量Image
的名称更改为pic
或picture
答案 1 :(得分:0)
您的第一遍创建了一个Image
对象Image.open(filename)
,或者是文件“文件名”上“图像”类的“打开”方法的实现。这是您每次迭代都想要的。不幸的是,您要做的是引导“ Image”类以使用新的“ Image”对象,因此在第二遍中,Image.open(filename)
中的“ Image”未引用“ Image”类,而是按您的“图片”对象。
通过更改解决问题:
Image = Image.open(filename)
im = pytesseract.image_to_string(Image)
收件人:
img = Image.open(filename)
im = pytesseract.image_to_string(img)