```python title="usage.py"
import subprocess
import httpx
import json
from pathlib import Path

class DockerKreuzbergClient:
    def __init__(self, container_name: str = "kreuzberg-api", port: int = 8000):
        self.container_name = container_name
        self.port = port
        self.api_url = f"http://localhost:{port}/api/extract"

    def start_container(self, image: str = "kreuzberg:latest"):
        print("Starting Kreuzberg Docker container...")
        subprocess.run(
            [
                "docker", "run", "-d",
                "--name", self.container_name,
                "-p", f"{self.port}:8000",
                image,
            ],
            check=True,
        )
        print(f"Container started on http://localhost:{self.port}")

    async def extract_file(self, file_path: str) -> str:
        file_bytes = Path(file_path).read_bytes()
        files = {"file": (Path(file_path).name, file_bytes)}

        async with httpx.AsyncClient() as client:
            response = await client.post(self.api_url, files=files)
            response.raise_for_status()
            result = response.json()
            return result.get("content", "")

    def stop_container(self):
        print("Stopping Kreuzberg Docker container...")
        subprocess.run(["docker", "stop", self.container_name], check=True)
        subprocess.run(["docker", "rm", self.container_name], check=True)
        print("Container stopped and removed")

async def main():
    docker_client = DockerKreuzbergClient()

    try:
        docker_client.start_container()
        import asyncio
        await asyncio.sleep(2)

        content = await docker_client.extract_file("document.pdf")
        print(f"Extracted content:\n{content}")
    finally:
        docker_client.stop_container()

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())
```
