"""Kép loader (PNG/JPG/JPEG) -- vision-first, NEM OCR az extract-hez. Filozófia: a képeknél (NEM PDF) az LLM közvetlenül a képet látja, NEM az OCR szövegéből dolgozik. Az OCR csak a `full_text` mezőhöz / RAG keresőhöz fut le (opcionálisan). Tehát: * PageContent.image_bytes = a kép bináris tartalma (vision-extract használja) * PageContent.is_scanned = True (vision-extract pathra megy) * full_text = OCR text (ha van) vagy üres -- chunker majd kihagyhatja Ez a `prototype-agentic` `pdf.py:load_image` mintát követi (vision-first elv). """ from __future__ import annotations from graph.states.pipeline_state import IngestedDocument, PageContent from ingest.ocr import ocr_image_bytes, tesseract_available def load_image(file_name: str, file_bytes: bytes, file_type: str = "png") -> IngestedDocument: """Egy kép betöltése IngestedDocument-té (mindig vision-first). file_type: `png`, `jpg`, `jpeg` — csak metadata, nem befolyásolja a feldolgozást. """ # OCR opcionálisan a full_text-hez (RAG kereséshez hasznos) full_text = "" if tesseract_available(): full_text = ocr_image_bytes(file_bytes) page = PageContent( page_number=1, text=full_text, is_scanned=True, # vision-extract path image_bytes=file_bytes, ) return IngestedDocument( file_name=file_name, file_type=file_type, pages=[page], full_text=full_text, tables_markdown="", table_count=0, is_scanned=True, )