AI & research · MSc research · In development
PictoGlyph
A metadata-led research system exploring how visual similarity and historical context can support experts studying ancient writing.
- Java
- Spring Boot
- PostgreSQL
- Python
The question
Can visual evidence and archaeological context help narrow down interpretations of ancient signs without presenting uncertain results as fact?
The approach
PictoGlyph starts with identifiable sign images and their sources, then investigates visual similarity alongside information such as script, place, period, artefact and language. The goal is ranked, explainable suggestions that a specialist can investigate.
Architecture at a glance
PictoGlyph research pipeline
Stage 1
Source-linked signs
Images, labels and provenance
Stage 2
Visual similarity
Candidate embeddings and comparison
Stage 3
Historical context
Place, time, script and artefact
Stage 4
Expert review
Ranked hypotheses, not final translations
This is the research architecture being developed and evaluated, not a claim of end-to-end translation accuracy.
Work so far
- Developing a relational model for scripts, signs, artefacts and contextual relationships.
- Curating provenance-aware sign-crop datasets and examining source quality.
- Experimenting with Java-based contextual tools and machine-learning workflows.
What comes next
- Evaluate visual representation and retrieval baselines on source-separated data.
- Test whether contextual information improves candidate ranking.
- Report uncertainty, bias and evaluation limitations alongside results.
Research and development note
PictoGlyph is ongoing MSc research. It does not claim to decipher undeciphered languages or replace archaeological expertise.
For developers and researchers
Technical deep dive
PictoGlyph separates collection and quality review of archaeological sign images from visual modelling and contextual interpretation. That separation matters: a model can be technically accurate at comparing pictures while its suggested historical interpretation is still unsupported.
The diagrams below show three different views of the same research system: deployed responsibilities, data relationships and the investigation sequence.
System architecture: Java, PostgreSQL and Python
The core application is Java 21 with Spring Boot, REST controllers, JPA and a PostgreSQL 16 database. The Java side handles domain entities, ingestion jobs, review decisions, dataset readiness and the tracking of model outputs. Its job is to retain evidence about what was processed and why, rather than ask a vision model to become the sole source of historical truth.
A separate Python/FastAPI service owns image preprocessing and embedding-model execution. The codebase contains a GPU-dependent SigLIP2 model implementation, as well as a deterministic mock embedding model used to support development. A versioned JSON processing contract connects the services. Keeping image processing behind that boundary allows vision experiments to change without rewriting the Java data and review workflow.
System / component view
Where each responsibility lives
The research workflow crosses a metadata-focused Java service and a separately evolving image-modelling service.
Application and persistence
Researcher / API client
Registers signs, reviews sources and requests investigations
Spring Boot API
Ingestion, agent tools, readiness rules and processing jobs
PostgreSQL
Languages, symbols, reviews, processing history and model outputs
Image-processing boundary
Approved image and job
Source checksum and model profile are retained
FastAPI processing service
Image preprocessing and configured model execution
Embedding records
Version, dimension, preprocessing and input checksum stored by Java
Component map, not a deployment topology: the Python SigLIP2 path requires CUDA and the repository also contains development mocks. A service boundary alone does not establish model accuracy.
Data model: provenance before prediction
A symbol record belongs to a language and can carry its symbol code, image location and JSON metadata. Ingestion services keep track of source jobs and items requiring review; duplicate sign codes can be skipped, while unsupported files are sent for manual processing. The wider research design also considers place, chronology, artefact and trade-route context, but not every intended relationship is yet an end-to-end validated feature.
An ML embedding record retains the symbol identifier, processing job, model name and version, model profile, vector dimension, preprocessing metadata and original input checksum. A separate dataset-release path only queues approved, labelled sign crops after checking that the current image checksum matches the stored source checksum. This helps prevent a quiet change in an image from invalidating later comparisons.
Data / relationship view
Tracing a sign from source to model output
Simplified conceptual relationships rather than a complete database ERD.
Core sign data
Language
A named language and associated context
Symbol
Code, image path, features and metadata
ML embedding
Model version, vector and input checksum
Quality-control lineage
Source / ingestion job
Where the image came from and what ran
Dataset preparation
Approved or rejected signs and source readiness
ML processing job
Explicitly queued work linked to reviewed source data
The boxes show traceable concepts; not every arrow represents a physical foreign key or a completed artefact-to-inscription association.
Reasoning: evidence is not a translation
The Java ContextAgent collects evidence from tools that examine questions such as language, place and date, alongside a symbol-similarity tool that calls the Python service. It sorts evidence by its reported confidence and assembles a provisional hypothesis with the supporting items. In the current implementation, the conclusion remains deliberately cautious and its score is a simple average of evidence confidence, not a calibrated probability.
An important limitation is that the symbol-similarity endpoint currently returns fixed mock candidates; it must not be confused with validated nearest-neighbour retrieval. The SigLIP2 embedding implementation and the similarity API solve different problems. Image embeddings alone do not identify a language, decipher an unknown script or establish historical context.
Sequence / evidence view
How an investigation builds an explanation
The context agent collects independently described evidence before displaying a provisional result.
Context investigation
Question and IDs
Symbol, language or place context
ContextAgent
Executes available Java AgentTool components
Evidence items
Date, place, language and visual similarity
Cautious hypothesis
Supporting reasons and explicitly limited confidence
Current similarity results are mocked, and averaging heuristic evidence scores does not provide calibrated archaeological confidence.
Testing strategy and engineering trade-offs
The repository includes Java tests for ingestion checksums, source mapping and schema drift, review and retry logic, agent tools, ML job contracts and embedding persistence. The Python service includes processing API tests. These tests support correctness of the surrounding software; they do not, by themselves, measure accuracy on unseen historical artefacts.
For future experiments, the useful comparison is visual similarity alone versus historical metadata alone versus a combination of both. Splitting datasets by artefact or source, rather than randomly distributing nearly identical sign crops across train and test sets, is important to avoid inflated results. Model versions, preprocessing and source provenance should remain attached to every recorded result.
- Keep PostgreSQL as the primary evidence store. PostgreSQL/pgvector is a candidate for metadata-aware vector retrieval; FAISS is deferred unless comparative benchmarks justify an additional search system.
- Report ranking quality, uncertainty, failure cases and annotation disagreements rather than a single headline accuracy.
- Treat visual similarity, proposed linguistic relationships and genuine decipherment as different claims requiring different evidence.
Evidence and current limits
The public PictoGlyph repository contains the Java agent, ingest/review services, dataset-release gate, ML-processing entities and Python SigLIP2 implementation. The linked code and tests support these implementation descriptions; public model evaluation results remain a separate task.
This is ongoing MSc research. No independently established translation accuracy, archaeological validation or live production performance is claimed.
