Spaces:
Running
Running
import gradio as gr | |
import pdfplumber | |
from transformers import pipeline | |
# L偶ejszy model NER | |
extractor = pipeline("ner", model="xlm-roberta-large-finetuned-conll03", aggregation_strategy="simple") | |
def extract_seller(pdf_file): | |
with pdfplumber.open(pdf_file) as pdf: | |
# Pobranie tekstu ze wszystkich stron | |
full_text = "\n".join(page.extract_text() for page in pdf.pages if page.extract_text()) | |
# Podzia艂 na kr贸tkie fragmenty (maks. 512 znak贸w, aby model dzia艂a艂 szybciej) | |
chunks = [full_text[i:i+512] for i in range(0, len(full_text), 512)] | |
seller_name = None | |
for chunk in chunks: | |
entities = extractor(chunk) | |
for entity in entities: | |
if "ORG" in entity["entity_group"]: # Szukamy nazw organizacji | |
seller_name = entity["word"] | |
break # Pobieramy pierwsz膮 wykryt膮 firm臋 jako sprzedawc臋 | |
if seller_name: # Je艣li znaleziono sprzedawc臋, przerywamy p臋tl臋 | |
break | |
return {"Sprzedawca": seller_name if seller_name else "Nie znaleziono"} | |
# Interfejs u偶ytkownika w Hugging Face Spaces | |
iface = gr.Interface( | |
fn=extract_seller, | |
inputs=gr.File(label="Wybierz plik PDF"), | |
outputs="json", | |
title="Ekstrakcja Sprzedawcy z Faktury", | |
description="Prze艣lij plik PDF, aby wydoby膰 nazw臋 sprzedawcy." | |
) | |
if __name__ == "__main__": | |
iface.launch() | |