Skip to content

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
Explore the technical deep dive

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

  1. Stage 1

    Source-linked signs

    Images, labels and provenance

  2. Stage 2

    Visual similarity

    Candidate embeddings and comparison

  3. Stage 3

    Historical context

    Place, time, script and artefact

  4. 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
  1. Researcher / API client

    Registers signs, reviews sources and requests investigations

  2. Spring Boot API

    Ingestion, agent tools, readiness rules and processing jobs

  3. PostgreSQL

    Languages, symbols, reviews, processing history and model outputs

Image-processing boundary
  1. Approved image and job

    Source checksum and model profile are retained

  2. FastAPI processing service

    Image preprocessing and configured model execution

  3. 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
  1. Language

    A named language and associated context

  2. Symbol

    Code, image path, features and metadata

  3. ML embedding

    Model version, vector and input checksum

Quality-control lineage
  1. Source / ingestion job

    Where the image came from and what ran

  2. Dataset preparation

    Approved or rejected signs and source readiness

  3. 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
  1. Question and IDs

    Symbol, language or place context

  2. ContextAgent

    Executes available Java AgentTool components

  3. Evidence items

    Date, place, language and visual similarity

  4. 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.