pdf-extractor / app.py
kryman27's picture
Update app.py
ec5299c verified
raw
history blame
1.42 kB
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()