Spaces:
Running
Running
import gradio as gr | |
import pdfplumber | |
from transformers import pipeline | |
# Model NER do rozpoznawania nazw organizacji | |
extractor = pipeline("ner", model="dbmdz/bert-large-cased-finetuned-conll03-english", aggregation_strategy="simple") | |
def extract_seller(pdf_file): | |
with pdfplumber.open(pdf_file) as pdf: | |
# Pobranie tekstu z PDF | |
full_text = "\n".join(page.extract_text() for page in pdf.pages if page.extract_text()) | |
# Podzia艂 tekstu na kr贸tkie fragmenty (maks. 512 znak贸w) | |
chunks = [full_text[i:i+512] for i in range(0, len(full_text), 512)] | |
seller_tokens = [] | |
for chunk in chunks: | |
entities = extractor(chunk) | |
for entity in entities: | |
if "ORG" in entity["entity_group"]: # Szukamy nazw organizacji | |
seller_tokens.append(entity["word"]) | |
if seller_tokens: # Je艣li znaleziono organizacj臋, przerywamy p臋tl臋 | |
break | |
# 艁膮czymy tokeny w pe艂n膮 nazw臋 organizacji | |
seller_name = " ".join(seller_tokens) | |
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() | |