# pyright: ignore
#!/usr/bin/env python3
"""
Debug script to test extraction on a single page PDF.
"""

from pathlib import Path
from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions, TableFormerMode

# Test file
pdf_path = Path("output/debug_pages/TMUS_992_Q423_page_017.pdf")

print(f"Testing extraction on: {pdf_path}")
print("=" * 50)

# Regular pipeline configuration
regular_pipeline_options = PdfPipelineOptions()
regular_pipeline_options.do_table_structure = True
regular_pipeline_options.table_structure_options.do_cell_matching = True
regular_pipeline_options.table_structure_options.mode = TableFormerMode.ACCURATE
regular_pipeline_options.do_ocr = True
regular_pipeline_options.images_scale = 2.0
regular_pipeline_options.generate_page_images = True

regular_format_options = PdfFormatOption(
    pipeline_options=regular_pipeline_options
)

converter = DocumentConverter(
    format_options={
        InputFormat.PDF: regular_format_options
    }
)

print("Converting with regular pipeline...")
result = converter.convert(str(pdf_path))

print("
Conversion complete!")
print(f"Document has {len(result.document.pages)} pages")
print(f"Document has {len(result.document.tables)} tables")

# Check what we got
document = result.document

# Check for text content
if hasattr(document, 'texts') and document.texts:
    print(f"
Found {len(document.texts)} text items")
    for i, text in enumerate(document.texts[:5]):
        print(f"Text {i+1}: {text}")
elif hasattr(document, 'text') and document.text:
    print("
First 500 chars of text:")
    print(document.text[:500])
else:
    print("
No text content found!")

# Check for tables
if document.tables:
    print(f"
Found {len(document.tables)} tables")
    for i, table in enumerate(document.tables):
        print(f"Table {i+1}: {table}")
else:
    print("
No tables found")

# Export to markdown
print("
Exporting to markdown...")
markdown = document.export_to_markdown()
print(f"Markdown length: {len(markdown)} characters")
print("
First 1000 chars of markdown:")
print(markdown[:1000])

# Save debug output
debug_output = Path("debug_extraction_output.md")
with open(debug_output, "w") as f:
    f.write(markdown)
print(f"
Full output saved to: {debug_output}")
