Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -207,6 +207,20 @@ def ocr_zone(image_path, y_start_frac, y_end_frac):
|
|
| 207 |
return ""
|
| 208 |
|
| 209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 210 |
def close_unclosed_html(md):
|
| 211 |
"""Close any unclosed <table>, <tbody>, <tr> tags to prevent layout bleed."""
|
| 212 |
if not md:
|
|
@@ -301,6 +315,7 @@ def run_ocr(uploaded_file):
|
|
| 301 |
parts.append(hdr.strip())
|
| 302 |
|
| 303 |
if page_md:
|
|
|
|
| 304 |
parts.append(close_unclosed_html(page_md))
|
| 305 |
|
| 306 |
# Footer extraction removed — MaaS API already captures all footer
|
|
|
|
| 207 |
return ""
|
| 208 |
|
| 209 |
|
| 210 |
+
def fix_account_number(page_md, hdr):
|
| 211 |
+
"""If page_md has 'Account Number:' with no value after it,
|
| 212 |
+
find the account number from header text and inject it."""
|
| 213 |
+
import re
|
| 214 |
+
if not page_md or not hdr:
|
| 215 |
+
return page_md
|
| 216 |
+
if not re.search(r'Account Number:\s*\S', page_md):
|
| 217 |
+
match = re.search(r'(\d{10,})', hdr)
|
| 218 |
+
if match:
|
| 219 |
+
acct = match.group(1)
|
| 220 |
+
page_md = page_md.replace('Account Number:', 'Account Number: ' + acct)
|
| 221 |
+
return page_md
|
| 222 |
+
|
| 223 |
+
|
| 224 |
def close_unclosed_html(md):
|
| 225 |
"""Close any unclosed <table>, <tbody>, <tr> tags to prevent layout bleed."""
|
| 226 |
if not md:
|
|
|
|
| 315 |
parts.append(hdr.strip())
|
| 316 |
|
| 317 |
if page_md:
|
| 318 |
+
page_md = fix_account_number(page_md, hdr)
|
| 319 |
parts.append(close_unclosed_html(page_md))
|
| 320 |
|
| 321 |
# Footer extraction removed — MaaS API already captures all footer
|