"""
Layout Parsing Example

This example demonstrates how to use the layout_parsing API to parse
images and PDFs for OCR with detailed layout detection.

The API returns:
- Markdown formatted text
- Detailed layout information (element positions, types, content)
- Visualization images
"""
from zai import ZaiClient

def layout_parsing_example_with_url():
    """Example using an image URL for layout parsing."""
    client = ZaiClient()

    # Image URL to parse
    image_url = "https://cdn.bigmodel.cn/static/platform/images/trialcenter/example/visual_img1.jpeg"

    print(f"Sending request to parse image: {image_url}")

    try:
        response = client.layout_parsing.create(
            model="glm-ocr",
            file=image_url
        )

        print("\n✓ Request successful!")
        print(f"Task ID: {response.id}")
        print(f"Model: {response.model}")
        print(f"Created at: {response.created}")
        print(f"Request ID: {response.request_id}")

        # Print document info
        if response.data_info:
            print(f"\nDocument Info:")
            print(f"  - Total pages: {response.data_info.num_pages}")
            if response.data_info.pages:
                for i, page in enumerate(response.data_info.pages):
                    print(f"  - Page {i+1}: {page.width}x{page.height}")

        # Print markdown results
        print(f"\n=== Markdown Results ===\n")
        print(response.md_results)

        # Print layout details if available
        if response.layout_details:
            print(f"\n=== Layout Details ===")
            for page_idx, page_details in enumerate(response.layout_details):
                print(f"\nPage {page_idx + 1}:")
                for element in page_details:
                    print(f"  [{element.index}] {element.label}: {element.content[:50] if element.content else 'N/A'}...")
                    if element.bbox_2d:
                        print(f"       BBox: {element.bbox_2d}")

        # Print visualization URLs
        if response.layout_visualization:
            print(f"\n=== Visualization URLs ===")
            for i, url in enumerate(response.layout_visualization):
                print(f"  Page {i + 1}: {url}")

        # Print usage information
        if response.usage:
            print(f"\n=== Token Usage ===")
            print(f"  - Prompt tokens: {response.usage.prompt_tokens}")
            print(f"  - Completion tokens: {response.usage.completion_tokens}")
            print(f"  - Total tokens: {response.usage.total_tokens}")
            if response.usage.prompt_tokens_details:
                print(f"  - Prompt details: {response.usage.prompt_tokens_details}")

    except Exception as e:
        print(f"\n✗ Error: {e}")
        raise


if __name__ == "__main__":
    # Run the URL example with the test image
    layout_parsing_example_with_url()
