Spaces:
Runtime error
Runtime error
| # src/summary.py | |
| from __future__ import annotations | |
| import re | |
| from typing import Dict, List, Tuple | |
| from schema import ExtractedDocument | |
| def _top_keywords(keywords: Dict[str, int], top_n: int = 10) -> List[Tuple[str, int]]: | |
| items = sorted(keywords.items(), key=lambda x: x[1], reverse=True) | |
| return [(k, v) for k, v in items if v > 0][:top_n] | |
| def _guess_address(text: str) -> str: | |
| # Very naive US-style address guess | |
| # e.g., "123 Main St, Dallas, TX 75201" | |
| pattern = r"\b\d{1,6}\s+[A-Za-z0-9.\- ]+\s+(Street|St|Avenue|Ave|Road|Rd|Boulevard|Blvd|Lane|Ln|Drive|Dr)\b.*?\b[A-Z]{2}\s+\d{5}\b" | |
| m = re.search(pattern, text, flags=re.IGNORECASE) | |
| return m.group(0).strip() if m else "" | |
| def naive_summary(doc: ExtractedDocument) -> Dict[str, object]: | |
| words = doc.text.split() | |
| address_guess = _guess_address(doc.text[:20000]) # only scan early chunk | |
| return { | |
| "filename": doc.filename, | |
| "reader": doc.reader, | |
| "num_pages": doc.num_pages, | |
| "word_count": len(words), | |
| "table_count": len(doc.tables), | |
| "top_keyword_hits": _top_keywords(doc.keywords, top_n=12), | |
| "address_guess": address_guess, | |
| } | |