# Register Custom Validator Plugin Register a custom validator that checks extraction results for quality or correctness. ```typescript title="WASM" import init, { registerValidator, extractBytes } from "kreuzberg-wasm"; await init(); // Define a custom validator const customValidator = { validate: (extractionResult) => { const text = extractionResult.text || ""; // Check for minimum content if (text.length === 0) { return { valid: false, error: "No text extracted from document", }; } // Check for suspicious patterns const hasRepeatingChars = /(.)\1{5,}/.test(text); if (hasRepeatingChars) { return { valid: false, error: "Text contains excessive repeating characters (possible OCR error)", }; } // Check if text is mostly whitespace if (text.trim().length < text.length * 0.5) { return { valid: false, error: "Text is mostly whitespace", }; } return { valid: true, error: null, }; }, }; try { registerValidator(customValidator); console.log("Custom validator registered"); } catch (error) { console.error("Failed to register validator:", error); } // Extract and validate async function extractAndValidate(fileBytes, mimeType) { const result = await extractBytes(fileBytes, mimeType, {}); const validation = customValidator.validate(result); if (!validation.valid) { console.warn("Validation failed:", validation.error); } else { console.log("✓ Extraction passed validation"); } return result; } ``` Validators run after extraction to ensure results meet quality standards.