|
|
from skimage.io import imread, imsave |
|
|
from skimage.color import rgb2gray |
|
|
from PIL import Image |
|
|
import matplotlib.pyplot as plt |
|
|
import numpy as np |
|
|
from skimage.transform import resize |
|
|
from utils.preprocessing import preprocessImage, postProcessImage, process_segment_and_crop_image |
|
|
from utils.line_segmentation import segment_image_to_lines |
|
|
from configs import unet_enabled |
|
|
from utils.helper import load_images_from_json |
|
|
from inference import Inference |
|
|
from configs import model_path, processor_path, unet_model_path |
|
|
from utils.postprocessing import PostProcessing |
|
|
from loguru import logger |
|
|
|
|
|
def RenAITranscription(image, post_processing_enabled=False,unet_enabled=False): |
|
|
|
|
|
org_img = imread(image)[: , : ,:] |
|
|
|
|
|
logger.info(f'Image Dimensions : {org_img.shape[0]} x {org_img.shape[1]}') |
|
|
|
|
|
intial_process_image = preprocessImage(org_img) |
|
|
|
|
|
if unet_enabled: |
|
|
logger.info("Masked based segmentation and cropping enabled...") |
|
|
cropped_img = process_segment_and_crop_image(unet_model_path, org_img, intial_process_image, padding=10, min_contour_area=100) |
|
|
processed_image = postProcessImage(cropped_img) |
|
|
logger.info(f"Image cropped and Pre-processed successfully.....") |
|
|
else: |
|
|
logger.info("Image Preprocessing started......") |
|
|
processed_image = postProcessImage(intial_process_image) |
|
|
logger.info(f"Image Pre-processed successfully.....") |
|
|
|
|
|
|
|
|
line_segments = segment_image_to_lines(processed_image, base_key="line",ct=0) |
|
|
|
|
|
|
|
|
|
|
|
transciption_generator = Inference( |
|
|
model_path=model_path, |
|
|
processor_path=processor_path, |
|
|
target_size=(256, 64), |
|
|
batch_size=32 |
|
|
) |
|
|
result = transciption_generator.generate_texts_from_images(line_segments) |
|
|
|
|
|
|
|
|
for key, value in result.items(): |
|
|
print(f"{key}: {value['transcription']}") |
|
|
|
|
|
|
|
|
|
|
|
if post_processing_enabled: |
|
|
for key, value in result.items(): |
|
|
corrected = PostProcessing(value['transcription']) |
|
|
result[key]['post_processed'] = corrected |
|
|
print(f"{key}: {value['post_processed']}") |
|
|
|
|
|
print(result) |
|
|
|
|
|
logger.info("Transcription completed successfully!") |
|
|
return result |
|
|
|
|
|
if __name__ == "__main__": |
|
|
RenAITranscription("1.png", post_processing_enabled=False, unet_enabled=False) |