После нескольких испытаний, я думаю, у меня есть жизнеспособное решение этого вопроса.
Я использовал вложенную функцию для этого упражнения, чтобы функция 1 зацикливалась на кадре данных файлов и вызывала функцию 2, чтобы извлечь текст, выполнить проверку и вернуть значение, если у изображения было ожидаемое поле.
Сначала я создал пустой список, который будет заполняться при каждом запуске функции 2. В конце пользователь может выбрать использование этого списка для создания кадра данных.
# dataframes to store data
df = pd.DataFrame(os.listdir(), columns=['filenames'])
df = df[df['filenames'].str.contains(".png|.jpg|.jpeg")]
df['filenames'] = '\\' + df['filenames']
df1 = [] #Empty list to record details
# Function 1
def extract_details(df):
for filename in df['filenames']:
get_details(filename)
# Function 2
def get_details(filename):
image = os.getcwd() + filename
data = pytesseract.image_to_string(Image.open(image))
.
.
.
data = ''.join(a)
print(filename, data)
df1.append([filename, data])
df_data = pd.DataFrame(df1, columns=['filenames', 'data']) # Container for final output
df_data.to_csv('data_list.csv') # Write output to a csv file
df_data.to_excel('data_list.xlsx') # Write output to an excel file