Bestra avatar

debug-pdf-extraction

Debug PDF text extraction issues. Use when parser is producing wrong data, missing units, or garbled

by Bestra|Open Source

Debug PDF Extraction

PDFs store visual layout, not logical text structure. This causes extraction issues like merged columns, wrong reading order, and corrupted characters.

Inspect Raw Page Text

Create a temporary script to see exactly what pdfplumber extracts:

# parser/debug_pdf.py
import pdfplumber

with pdfplumber.open("/path/to/SomeGame.pdf") as pdf:
    page = pdf.pages[PAGE_NUMBER - 1]  # 0-indexed
    text = page.extract_text()

    for j, line in enumerate(text.split("\n")):
        print(f"{j:3}: {repr(line)}")

Run with:

cd parser && uv run python debug_pdf.py

Common Issues

Merged columns

Text from sidebars gets concatenated with main content:

"sCenario 10: marChinG to CoLd harbor 4. Destroyed RR Stations: The following..."

Solution: Use regex to extract just the part you need.

Weird capitalization

Small caps fonts appear as mixed case:

"sCenario" instead of "Scenario"

Solution: Use case-insensitive matching (re.IGNORECASE).

Table extraction issues

Tables may not parse correctly with extract_text(). Try:

tables = page.extract_tables()
for table in tables:
    for row in table:
        print(row)

Inspect Specific Elements

# Find text containing a pattern
import re
for i, page in enumerate(pdf.pages):
    text = page.extract_text() or ""
    if re.search(r"pattern", text, re.IGNORECASE):
        print(f"Found on page {i+1}")

Clean Up

Delete parser/debug_pdf.py when done—it's just for investigation.