Skip to content

feat:add tesseract option#28

Merged
Kaiohz merged 1 commit into
mainfrom
feat/add-tesseract-option
Apr 27, 2026
Merged

feat:add tesseract option#28
Kaiohz merged 1 commit into
mainfrom
feat/add-tesseract-option

Conversation

@Kaiohz
Copy link
Copy Markdown
Collaborator

@Kaiohz Kaiohz commented Apr 27, 2026

No description provided.

Copy link
Copy Markdown
Collaborator Author

@Kaiohz Kaiohz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📊 Code Review — Score: 7/10

✅ Points Positifs

  1. Architecture améliorée : Le passage d'une config statique module-level vers une config injectable dans le constructeur est un bon pattern — plus flexible, plus testable.

  2. Tests à jour : Tous les tests existants sont mis à jour, et un nouveau test couvre le mode tesseract.

  3. Documentation : Le .env.example est à jour avec les options documentées.

  4. Lazy import : L'import from config import RAGConfig à l'intérieur de la fonction évite les imports circulaires potentiels.

  5. Renommage propre : LlmConfigKreuzbergLlmConfig évite le conflit de noms avec le local LLMConfig.

⚠️ Points à Améliorer

1. Validation du paramètre manquante

if ocr_mode == "vlm":
    ocr = OcrConfig(backend="vlm", ...)
else:
    ocr = OcrConfig(backend="tesseract")
  • Problème : Si on passe ocr_mode="unknown", ça tombe silencieusement dans le else et utilise tesseract.
  • Suggestion : Ajouter une validation explicite :
VALID_OCR_MODES = ("vlm", "tesseract")
if ocr_mode not in VALID_OCR_MODES:
    raise ValueError(f"Invalid OCR mode: {ocr_mode}. Must be one of {VALID_OCR_MODES}")

2. Type hints insuffisants

ocr_mode: str | None = None
  • Suggestion : Utiliser Literal pour plus de précision :
from typing import Literal
OCRMode = Literal["vlm", "tesseract"]

def make_extraction_config(ocr_mode: OCRMode | None = None) -> ExtractionConfig:

3. Pas de docstrings

Les nouvelles signatures n'ont pas de documentation :

  • make_extraction_config() — manque docstring
  • KreuzbergAdapter.__init__() — manque docstring

4. Fichier kreuzberg_raganything_parser.py

Juste une ligne vide ajoutée — pourquoi l'avoir inclus dans ce commit ?

📝 Suggestions d'amélioration (optionnelles)

  • Enum pour OCRMode : Plus robuste qu'une string :
class OCRMode(str, Enum):
    VLM = "vlm"
    TESSERACT = "tesseract"
  • Logs de debug : Ajouter un log au démarrage indiquant quel OCR mode est utilisé.

🎯 Verdict

PR fonctionnelle qui ajoute la flexibilité attendue. Quelques améliorations de robustesse (validation, type hints) mériteraient d'être ajoutées avant merge. Rien de bloquant, mais un quick pass de cleanup améliorerait la maintenabilité.

Recommandation : soit merge tel quel si urgent, soit ajouter validation + type hints dans un follow-up.

@Kaiohz Kaiohz merged commit efea026 into main Apr 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant