Spaces:
Paused
Paused
| from transformers import TrOCRProcessor, VisionEncoderDecoderModel | |
| from PIL import Image | |
| import pdf2image | |
| import gradio as gr | |
| import base64 | |
| import io | |
| import torch | |
| import os | |
| # ✅ Sprawdzenie, czy Poppler jest dostępny | |
| poppler_path = os.getenv("PATH") | |
| print(f"Poppler PATH: {poppler_path}") | |
| # ✅ Używamy lżejszego modelu dla większej wydajności | |
| MODEL_NAME = "microsoft/trocr-base-stage1" | |
| processor = TrOCRProcessor.from_pretrained(MODEL_NAME) | |
| model = VisionEncoderDecoderModel.from_pretrained(MODEL_NAME) | |
| # ✅ Funkcja przetwarzania faktury (odbiera Base64 PDF) | |
| def process_invoice(pdf_base64): | |
| try: | |
| # ✅ Dekodowanie Base64 na plik PDF | |
| pdf_bytes = base64.b64decode(pdf_base64) | |
| pdf_stream = io.BytesIO(pdf_bytes) | |
| # ✅ Konwersja PDF do obrazu | |
| images = pdf2image.convert_from_bytes(pdf_stream.read()) | |
| if not images: | |
| return "Błąd: Nie udało się przekonwertować PDF na obraz." | |
| # ✅ Przetwarzanie pierwszej strony faktury | |
| image = images[0].convert("RGB") | |
| pixel_values = processor(images=image, return_tensors="pt").pixel_values | |
| # ✅ Uruchomienie modelu AI | |
| generated_ids = model.generate(pixel_values) | |
| extracted_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] | |
| return extracted_text | |
| except Exception as e: | |
| return f"Błąd przetwarzania: {str(e)}" | |
| # ✅ API Gradio (teraz akceptuje Base64 jako wejście) | |
| interface = gr.Interface( | |
| fn=process_invoice, | |
| inputs=gr.Textbox(label="PDF w Base64"), | |
| outputs="text", | |
| title="AI Invoice Processor", | |
| description="Prześlij fakturę jako Base64, a AI wyodrębni dane tekstowe.", | |
| ) | |
| # ✅ Uruchomienie aplikacji | |
| interface.launch() | |