# vummidiganesh55/multimodal-dca-ai architecture

> Architecture diagram of the GitHub repository vummidiganesh55/multimodal-dca-ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vummidiganesh55/multimodal-dca-ai
- Repository: https://github.com/vummidiganesh55/multimodal-dca-ai

## Overview

Multimodal DCA AI turns invoice and other document pages into structured, validated results, with anomaly signals and evaluation. The README documents the principal processing stages; sampled source confirms OCR, layout, extraction, table-building, validation, and anomaly behavior. The pipeline excerpt omits key orchestration sections, so uncertain component wiring is not shown.

Main entry points: [`src/pipeline.py`](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pipeline.py) (Document pipeline), [`src/evaluation/evaluator.py`](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/evaluation/evaluator.py) (Evaluation), [`src/ocr/paddle_ocr.py`](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/ocr/paddle_ocr.py) (Paddle OCR), [`src/feature_extractor.py`](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/feature_extractor.py) (Anomaly features)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingestion["Input and Processing"]
  node_pipeline["Document pipeline<br/>[pipeline.py]"]
  node_loader["Document loading<br/>[document_loader.py]"]
  node_preprocess["Image preprocessing<br/>[image_processor.py]"]
  node_pdf["PDF processing<br/>[pdf_processor.py]"]
end

subgraph group_understanding["Document Understanding"]
  node_ocr["Paddle OCR<br/>[paddle_ocr.py]"]
  node_handwriting["Handwriting recognition"]
  node_multilingual["Multilingual OCR"]
  node_language["Language detection"]
  node_layout["Layout analysis<br/>[layout_analyzer.py]"]
  node_extract["Information extraction"]
  node_tables["Table extraction<br/>[table_extractor.py]"]
  node_tablejson["Table JSON building"]
  node_chart["Chart analysis<br/>[chart_analyzer.py]"]
end

subgraph group_assessment["Validation and Risk"]
  node_validation["Document validation"]
  node_features["Anomaly features"]
  node_mlanomaly["ML anomaly detection<br/>[ml_anomaly.py]"]
  node_rules["Rule-based signals<br/>[rules.py]"]
end

subgraph group_results["Results and Evaluation"]
  node_results["Structured results<br/>[pipeline.py]"]
  node_dashboard["Results dashboard<br/>[streamlit_app.py]"]
  node_evaluation["Evaluation<br/>[evaluator.py]"]
  node_groundtruth["Ground truth<br/>[ground_truth.json]"]
end

node_user(("Document user"))

node_user -->|"submits document"| node_pipeline
node_pipeline -->|"loads document"| node_loader
node_pipeline -->|"processes pages"| node_pdf
node_pipeline -->|"preprocesses images"| node_preprocess
node_pipeline -->|"runs OCR"| node_ocr
node_ocr -->|"provides text and boxes"| node_layout
node_pipeline -->|"analyzes layout"| node_layout
node_pipeline -->|"extracts fields"| node_extract
node_pipeline -->|"extracts tables"| node_tables
node_pipeline -->|"builds table JSON"| node_tablejson
node_pipeline -->|"validates data"| node_validation
node_pipeline -->|"prepares anomaly features"| node_features
node_features -->|"supplies features"| node_mlanomaly
node_pipeline -->|"requests anomaly analysis"| node_mlanomaly
node_pipeline -->|"checks rule signals"| node_rules
node_pipeline -->|"assembles results"| node_results
node_evaluation -->|"compares against"| node_groundtruth
node_dashboard -.->|"displays results"| node_results
node_evaluation -->|"evaluates results"| node_results

click node_pipeline "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pipeline.py"
click node_loader "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/document_loader.py"
click node_preprocess "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/preprocessing/image_processor.py"
click node_pdf "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pdf_processor.py"
click node_ocr "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/ocr/paddle_ocr.py"
click node_handwriting "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/handwriting/handwriting_recognizer.py"
click node_multilingual "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/ocr/multilingual_ocr.py"
click node_language "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/multilingual/language_detector.py"
click node_layout "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/layout/layout_analyzer.py"
click node_extract "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/extraction/information_extractor.py"
click node_tables "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/tables/table_extractor.py"
click node_tablejson "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/tables/table_json_builder.py"
click node_chart "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/chart_analysis/chart_analyzer.py"
click node_validation "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/validation/document_validator.py"
click node_features "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/feature_extractor.py"
click node_mlanomaly "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/anomaly/ml_anomaly.py"
click node_rules "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/anomaly/rules.py"
click node_results "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pipeline.py"
click node_dashboard "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/app/streamlit_app.py"
click node_evaluation "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/evaluation/evaluator.py"
click node_groundtruth "https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/data/ground_truth.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_pipeline,node_loader,node_preprocess,node_pdf,node_user toneBlue
class node_ocr,node_handwriting,node_multilingual,node_language,node_layout,node_extract,node_tables,node_tablejson,node_chart toneAmber
class node_validation,node_features,node_mlanomaly,node_rules toneMint
class node_results,node_dashboard,node_evaluation,node_groundtruth toneRose
```

## Components

### Input and Processing

- [Document pipeline](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pipeline.py): `src/pipeline.py`
- [Document loading](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/document_loader.py): `src/document_loader.py`
- [Image preprocessing](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/preprocessing/image_processor.py): `src/preprocessing/image_processor.py`
- [PDF processing](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pdf_processor.py): `src/pdf_processor.py`

### Document Understanding

- [Paddle OCR](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/ocr/paddle_ocr.py): `src/ocr/paddle_ocr.py`
- [Handwriting recognition](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/handwriting/handwriting_recognizer.py): `src/handwriting/handwriting_recognizer.py`
- [Multilingual OCR](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/ocr/multilingual_ocr.py): `src/ocr/multilingual_ocr.py`
- [Language detection](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/multilingual/language_detector.py): `src/multilingual/language_detector.py`
- [Layout analysis](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/layout/layout_analyzer.py): `src/layout/layout_analyzer.py`
- [Information extraction](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/extraction/information_extractor.py): `src/extraction/information_extractor.py`
- [Table extraction](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/tables/table_extractor.py): `src/tables/table_extractor.py`
- [Table JSON building](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/tables/table_json_builder.py): `src/tables/table_json_builder.py`
- [Chart analysis](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/chart_analysis/chart_analyzer.py): `src/chart_analysis/chart_analyzer.py`

### Validation and Risk

- [Document validation](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/validation/document_validator.py): `src/validation/document_validator.py`
- [Anomaly features](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/feature_extractor.py): `src/feature_extractor.py`
- [ML anomaly detection](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/anomaly/ml_anomaly.py): `src/anomaly/ml_anomaly.py`
- [Rule-based signals](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/anomaly/rules.py): `src/anomaly/rules.py`

### Results and Evaluation

- [Structured results](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/pipeline.py): `src/pipeline.py`
- [Results dashboard](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/app/streamlit_app.py): `app/streamlit_app.py`
- [Evaluation](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/src/evaluation/evaluator.py): `src/evaluation/evaluator.py`
- [Ground truth](https://github.com/vummidiganesh55/multimodal-dca-ai/blob/main/data/ground_truth.json): `data/ground_truth.json`

### Other components

- **Document user**

## Connections

- Document user → Document pipeline: submits document
- Document pipeline → Document loading: loads document
- Document pipeline → PDF processing: processes pages
- Document pipeline → Image preprocessing: preprocesses images
- Document pipeline → Paddle OCR: runs OCR
- Paddle OCR → Layout analysis: provides text and boxes
- Document pipeline → Layout analysis: analyzes layout
- Document pipeline → Information extraction: extracts fields
- Document pipeline → Table extraction: extracts tables
- Document pipeline → Table JSON building: builds table JSON
- Document pipeline → Document validation: validates data
- Document pipeline → Anomaly features: prepares anomaly features
- Anomaly features → ML anomaly detection: supplies features
- Document pipeline → ML anomaly detection: requests anomaly analysis
- Document pipeline → Rule-based signals: checks rule signals
- Document pipeline → Structured results: assembles results
- Evaluation → Ground truth: compares against
- Results dashboard → Structured results: displays results
- Evaluation → Structured results: evaluates results
