```php title="PHP" setOcr($ocrConfig); // Set chunking: semantic markdown chunks ~800 chars, 100-char overlap $chunkingConfig = new ChunkingConfig( 800, // max_characters 100, // overlap true, // trim 'Markdown', // chunker_type null, // preset true, // prepend_heading_context null, // topic_threshold ); $config->setChunking($chunkingConfig); // Set image extraction $imageConfig = new ImageExtractionConfig( true, // extract_images null, // image_min_width null, // image_min_height null, // image_output_format null, // image_compression_level ); $config->setImages($imageConfig); $result = Kreuzberg::extractFileSync('report.pdf', null, $config); echo "Content (" . strlen($result->getContent()) . " chars):\n"; echo substr($result->getContent(), 0, 200) . "\n\n"; if ($result->getChunks() !== null) { echo "Chunks: " . count($result->getChunks()) . "\n"; } echo "Tables: " . count($result->getTables()) . "\n"; if ($result->getDetectedLanguages() !== null) { echo "Languages: " . implode(', ', $result->getDetectedLanguages()) . "\n"; } if ($result->getExtractionMethod() !== null) { echo "Extraction method: " . $result->getExtractionMethod() . "\n"; } ```