Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import io, os
- from google.cloud import vision
- from PIL import Image, ImageEnhance
- def detect_text(image_file, credentials_file, text_area):
- """Detects text in an image."""
- os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credentials_file # Authenticates the client
- try:
- with Image.open(image_file, 'r') as img:
- # Crop the image
- img_cropped = img.crop(text_area)
- img_rgb = img_cropped.convert('RGB')
- # Convert the image to grayscale mode
- img_gray = img_rgb.convert("L")
- # Apply thresholding to convert gray pixels to white
- img_bw = img_gray.convert('L')
- # Reduce the brightness of the image
- enhancer = ImageEnhance.Brightness(img_bw)
- img_low_brightness = enhancer.enhance(1.5)
- # Enhance the contrast of the image
- enhancer = ImageEnhance.Contrast(img_low_brightness)
- img_contrast = enhancer.enhance(3)
- # Rotate the image
- img_rotated = img_contrast.rotate(0, expand=True)
- # Save the modified image
- img_rotated.save("contrast_image.png")
- except FileNotFoundError:
- print(f"Error: File not found: {image_file}")
- return None
- # Send the cropped image to the Google Cloud Vision API for text detection
- client = vision.ImageAnnotatorClient()
- content = io.BytesIO()
- img_contrast.save(content, format='PNG')
- image = vision.Image(content=content.getvalue())
- response = client.text_detection(image=image)
- texts = response.text_annotations
- # Handle errors
- if response.error.message:
- raise Exception(response.error.message)
- # Return the first detected text as a float
- try:
- print(float(texts[0].description)) # Prints the detected text (optional)
- return float(texts[0].description)
- except IndexError:
- print("No text detected in the image.")
- return None
- detect_text(image_file='meter.jpg', credentials_file='GoogleVisionKeys.json', text_area=(340, 135, 580, 200)) # text_area = (left, top, right, bottom)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement