Spaces:
Running
Running
Major update. Support for 15 LLMs, World Flora Online taxonomy validation, geolocation, 2 OCR methods, significant UI changes, stability improvements, consistent JSON parsing
67f7ed6
| from langchain.prompts import PromptTemplate | |
| from langchain_core.output_parsers import JsonOutputParser | |
| from langchain_core.pydantic_v1 import BaseModel, Field | |
| class Transcription(BaseModel): | |
| Transcription_Printed_Text: str = Field(description="The transcription of all printed text in the image.") | |
| Transcription_Handwritten_Text: str = Field(description="The transcription of all handwritten text in the image.") | |
| class OCRGPT4VisionPreview: | |
| def __init__(self, logger, api_key, endpoint_url="https://gpt-4-vision-preview-api.com/ocr"): | |
| self.logger = logger | |
| self.api_key = api_key | |
| self.endpoint_url = endpoint_url | |
| self.parser = JsonOutputParser(pydantic_object=Transcription) | |
| def transcribe_image(self, image_file): | |
| self.logger.start_monitoring_usage() | |
| headers = {"Authorization": f"Bearer {self.api_key}"} | |
| files = {'image': open(image_file, 'rb')} | |
| response = requests.post(self.endpoint_url, headers=headers, files=files) | |
| if response.status_code == 200: | |
| json_response = response.json() | |
| transcription = self.parser.parse(json_response) | |
| else: | |
| self.logger.log_error("Failed to transcribe image") | |
| transcription = {"Transcription": "Error"} | |
| usage_report = self.logger.stop_monitoring_report_usage() | |
| return transcription, usage_report | |