dots.ocr release
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
||||
import os
|
||||
from PIL import Image
|
||||
|
||||
|
||||
def is_valid_image_path(image_path):
|
||||
"""
|
||||
Checks if the image path is valid.
|
||||
|
||||
Args:
|
||||
image_path: The path to the image.
|
||||
|
||||
Returns:
|
||||
bool: True if the path is valid, False otherwise.
|
||||
"""
|
||||
if not os.path.exists(image_path):
|
||||
return False
|
||||
|
||||
# Check if the file extension is one of the common image formats.
|
||||
image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
|
||||
_, extension = os.path.splitext(image_path)
|
||||
if extension.lower() in image_extensions:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def read_image(image_path, use_native=False):
|
||||
"""
|
||||
Reads an image and resizes it while maintaining aspect ratio.
|
||||
|
||||
Args:
|
||||
image_path: The path to the image.
|
||||
use_native: If True, the max dimension of the original image is used as the max size.
|
||||
If False, max size is set to 1024.
|
||||
|
||||
Returns:
|
||||
tuple: (resized_image, original_width, original_height)
|
||||
"""
|
||||
# Create a default 512x512 blue image as a fallback.
|
||||
image = Image.new('RGB', (512, 512), color=(0, 0, 255))
|
||||
|
||||
if is_valid_image_path(image_path):
|
||||
image = Image.open(image_path)
|
||||
else:
|
||||
raise FileNotFoundError(f"{image_path}: Image path does not exist")
|
||||
|
||||
w, h = image.size
|
||||
if use_native:
|
||||
max_size = max(w, h)
|
||||
else:
|
||||
max_size = 1024
|
||||
|
||||
if w > h:
|
||||
new_w = max_size
|
||||
new_h = int(h * max_size / w)
|
||||
else:
|
||||
new_h = max_size
|
||||
new_w = int(w * max_size / h)
|
||||
|
||||
image = image.resize((new_w, new_h))
|
||||
return image, w, h
|
||||
Reference in New Issue
Block a user