OCR 文件夹中的每个 .png 文件
OCR every .png file in a folder
我想遍历文件夹中的每个 .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)
输出:
Traceback (most recent call last): File
"C:\Users\Artur\Desktop\Pytesseract_test.py", line 9, in
Image = Image.open(filename) AttributeError: 'PngImageFile' object has no attribute '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'
编辑2:
这很奇怪。当我这样做时:
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'
将变量 Image
的名称更改为其他名称,例如 pic
或 picture
您的第一遍创建了一个对象 Image
,它是 Image.open(filename)
,或者是文件上 'Image' class 的 'open' 方法的实现'filename'。这就是您在每次迭代中想要的。不幸的是,您所做的是启动 'Image' class 以支持您的新 'Image' 对象,因此在第二次传递 'Image' in Image.open(filename)
并不是指 'Image' class,而是指你的 'Image' 对象。
通过更改解决您的问题:
Image = Image.open(filename)
im = pytesseract.image_to_string(Image)
至:
img = Image.open(filename)
im = pytesseract.image_to_string(img)
我想遍历文件夹中的每个 .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)
输出:
Traceback (most recent call last): File "C:\Users\Artur\Desktop\Pytesseract_test.py", line 9, in Image = Image.open(filename) AttributeError: 'PngImageFile' object has no attribute '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'
编辑2:
这很奇怪。当我这样做时:
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'
将变量 Image
的名称更改为其他名称,例如 pic
或 picture
您的第一遍创建了一个对象 Image
,它是 Image.open(filename)
,或者是文件上 'Image' class 的 'open' 方法的实现'filename'。这就是您在每次迭代中想要的。不幸的是,您所做的是启动 'Image' class 以支持您的新 'Image' 对象,因此在第二次传递 'Image' in Image.open(filename)
并不是指 'Image' class,而是指你的 'Image' 对象。
通过更改解决您的问题:
Image = Image.open(filename)
im = pytesseract.image_to_string(Image)
至:
img = Image.open(filename)
im = pytesseract.image_to_string(img)