import numpy as np import easyocr from tqdm.auto import tqdm import csv reader = easyocr.Reader(["en", "ch_sim"]) def apply_ocr(cell_coordinates, cropped_table): data = dict() max_num_columns = 0 for idx, row in enumerate(tqdm(cell_coordinates)): row_text = [] for cell in row["cells"]: cell_image = np.array(cropped_table.crop(cell["cell"])) result = reader.readtext(np.array(cell_image)) if len(result) > 0: text = " ".join([x[1] for x in result]) row_text.append(text) if len(row_text) > max_num_columns: max_num_columns = len(row_text) data[idx] = row_text print("Max number of columns:", max_num_columns) for row, row_data in data.copy().items(): if len(row_data) != max_num_columns: row_data = row_data + ["" for _ in range(max_num_columns - len(row_data))] data[row] = row_data return data def save_csv(data): with open("output.csv", "w") as result_file: wr = csv.writer(result_file, dialect="excel") for row, row_text in data.items(): wr.writerow(row_text)