OcrAsyncRunner injects TranscriptionService and AnnotationService; it only accesses the DB directly for OcrJob state (OcrJobRepository). The previous Rel arrow incorrectly showed direct JDBC access for transcription blocks and annotations, contradicting the component description. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>