22 lines
595 B
Python
22 lines
595 B
Python
from pathlib import Path
|
|
from typing import Callable
|
|
|
|
import pdfplumber
|
|
|
|
from app.parsers import dkb, hvb, vr
|
|
from app.parsers.base import ParsedStatement, ParserError
|
|
from app.parsers.detect import detect_bank
|
|
|
|
PARSERS: dict[str, Callable[[Path], ParsedStatement]] = {
|
|
"vr": vr.parse, "hvb": hvb.parse, "dkb": dkb.parse,
|
|
}
|
|
|
|
|
|
def parse_pdf(path: Path) -> ParsedStatement:
|
|
with pdfplumber.open(path) as pdf:
|
|
first = pdf.pages[0].extract_text() or ""
|
|
bank = detect_bank(first)
|
|
if bank is None:
|
|
raise ParserError("Bank nicht erkannt")
|
|
return PARSERS[bank](path)
|