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
- def crop_image(image, text_area):
- """Crops an image to a specified area."""
- return image.crop(text_area)
- def detect_text(image_file, credentials_file, text_area):
- """Detects text in an image."""
- os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credentials_file # Authenticates the client
- # Open the image file
- try:
- with open(image_file, 'rb') as f:
- image_data = f.read()
- except FileNotFoundError:
- print(f"Error: File not found: {image_file}")
- return None
- # Crop the image
- image = Image.open(io.BytesIO(image_data))
- cropped_image = crop_image(image, text_area)
- # Send the cropped image to the Google Cloud Vision API for text detection
- client = vision.ImageAnnotatorClient()
- content = io.BytesIO()
- cropped_image.save(content, format='JPEG')
- 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)) # Print the detected text
- return float(texts[0].description)
- except IndexError:
- print("No text detected in the image.")
- return None
- detect_text('meter_digits.jpg', 'GoogleVisionKeys.json', (270, 195, 720, 280))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement