Where Are the data from? what is missing?

Methodology & data ethics

How are data compiled throughout the CINEAGRI project?

The CINEAGRI dataset has been compiled from thousands of documents using multiple interlocking technologies, most of which make use of some form of large language model (LLM). Several layers of guardrails ensure a minimum level of reliability. LLMs have been chosen on the basis of performance audits and custom bechmarks comparings several available alternatives. Learn about the data extraction methodology below, scroll down to learn about biases and gaps in the dataset and how the project mitigates them, or see this interactive visualization of the number of sources in the dataset. The project’s focus lies on the nitrate film era, from 1895 until ca. 1950, although not exclusively. Many sources have been included because they either originate in or discuss this time period – however, the earliest source in the corpus dates from 1789, and the latest from 2026.

On the most basic level, the CINEAGRI data extraction pipeline consists of three key stages: Corpus compilation, dataset creation, and knowledge graph extraction. Together, these stages involve the following main steps:

Corpus compilation: Digitize sources Perform text recognition Dataset creation: Cluster documents Annotate them with metadata Perform vector embedding Knowledge graph extraction: Compile entity descriptions Extract structured data

Source digitization

Source digitization is the point at which an archival object is turned into a digital source. The CINEAGRI corpus contains photographs and scans of tens of thousands of pages of letters, reports, tables, technical records, and other corporate documentation. All of these materials have been scanned either on location at various archives – predominantly the German Federal Archives and the Bayer AG corporate archive in Berlin (Germany), the Fotomuseum Antwerpen (Belgium), and the National Diet Library in Tokyo (Japan) – or by collecting historical documents, such as corporate history books, from antiquarian book stores. The defining feature of the collection is its multilinguality: The corpus contains primary records, secondary sources and academic literature in English, German, Dutch, French, Japanese as well as a smaller percentage of documents in other languages, covering all dominant photochemical manufacturers on the planet.

The project has also greatly benefited from the prior work of other archives, libraries and digitization initiatives. Supplementing the dataset is information and resources digitized by the Shibusawa Shashi Database, the Kobe University Library Newspaper Clippings Collection, the George Eastman Museum, and the German Federal Archives.

Text recognition

Text recognition converts typewritten or handwritten text in an image into searchable data. Because documents in the collection are written in multiple languages, scripts, layouts and writing styles, CINEAGRI does not use one universal text recognition route. Instead, typewritten pages are generally processed with a layout-aware document-recognition vision model, while handwritten pages are digitized through a separate recognition route. Consistent with prior research, models from the Gemini family performed exceptionally well during testing across a broad range of documents and languages, including in preserving complex layout features such as tables. They therefore form the project’s text recognition backbone. The most frequently used models were Gemini 3.1 Pro Preview (handwriting) and Pretrained Layout Parser v1.5 Pro 2025-08-25 (OCR).

These models achieve state-of-the-art text recognition and low character and word error rates. Model choice and settings have been finetuned over the course of several months based on stress tests with thousands of documents, including historical documents unrelated to the CINEAGRI dataset. As a result, the system is furnished with multiple failsafes that guard against many common types of failure. But transcription is, nevertheless, not infallible: names, dates, numbers, tables and degraded images remain especially vulnerable to error. Manual review is being performed continuously, and text recognition errors are being corrected throughout the project’s runtime.

Document clustering

A folder of digital archival images does not necessarily correspond to a single coherent folder of documents. Several scans may show one multi-page letter or report, while a single folder may contain correspondence, invoices, tables, attachments and unrelated notes. Document clustering is the process of reconstructing these documents into logically coherent units and ordering their pages. In this context, “clustering” means grouping loose pages that belong together in one document.

The CINEAGRI clustering pipeline relies on two clustering passes with manual review. The clustering system works by searching for evidence that two pages may belong to the same document: contiguous sentences that span pages, continuous page numbering, dates, letterheads, salutations, signatures, form designs, language changes, titles and changes in layout are all weighed as evidence. The output records page assignments, page order and confidence, then combines the recognized text into a document-level record with a stable identifier. The language model Gemini 2.5 Pro was used in text-only and text+image multimodal mode for document clustering. Any differences among the models were reviewed and manually corrected where necessary, with additional spot-checks peformed intermittently across the collection to ensure clustering reliability.

Metadata extraction

Once pages have been clustered into documents, the pipeline extracts descriptive metadata from each document: the document language, the document date where available, one or two keywords to describe the document type (such as ‘letter’ or ‘contract’) a list of salient topics and entities mentioned in the document, the author or issuer where supported, and a title. Metadata improves discovery and gives later retrieval and description systems important context, but it is still model-assisted interpretation and can be incomplete or mistaken.

Vector embedding

Vector embedding is a powerful technology for interacting with multilingual sources, because it allows researchers to search texts by meaning, rather than by keywords. A vector search for a term such as “celluloid” will also surface documents that discuss related concepts and terms from other languages, such as “Zelluloid”, “セルロイド”, or “cellulose nitrate”.

To make a large multilingual collection searchable by meaning, CINEAGRI divides document text into smaller, partly overlapping sections called chunks. Each chunk carries identifying information such as the document ID and, where available, document date, type, author and title. An embedding model then represents the meaning of each chunk as a long list of numbers, known as a vector. CINEAGRI uses Gemini Embedding 001 with 3072-dimensional vectors as the embedding model due to its robust performance in multilingual settings. High-dimensional vectors are not always better in general, but our comparisons have found that the model’s maximum of 3072 indeed works best for retrieval of relevant documents compared to lower settings. Chunk length depends on document script type, but is generally capped around 1600 tokens, with lower limits for documents with predominantly non-Latin characters.

Vectors are stored in a database together with the original text and provenance metadata. This is known as a retrieval-augmented generation system, or RAG. Retrieval normally begins with semantic similarity. Because vector search alone may be ineffective when querying for terms that do not form strong semantic anchors (for example, rare words and proper names), the CINEAGRI pipeline supplements it with traditional lexical search methods, augmented to be resilient against a variety of proper name variants and common OCR errors across languages (such as whitespaces, line breaks, person-name order normalization, corporate name and corporate suffix normalization, etc.). Vector search is always used in combination with lexical matching for names, known aliases and other terms that semantic search may overlook.

More specifically, the top 150 vector candidates are retrieved, together with up to 200 lexical candidates, including literal and whitespace-insensitive matches for canonical labels as well as known multilingual aliases or alternative appellations. Both candidate sets are combined, deduplicated, and ranked. Google’s Semantic Ranker Fast 004 is used for chunk reranking. Semantic Ranker Fast 004 was chosen after evaluating multiple ranking models because it combined high ranking speed with strong ranking performance in human expert evaluations. The final hybrid selector returns up to 30 snippets, with dynamic per-document caps to enforce source diversity.

The RAG vector database, containing more than 65,000 pages, is the heart of the CINEAGRI project. It retrieves document passages that are then used in knowledge graph extraction and in compiling entity descriptions.

Entity description compilation

The CINEAGRI atlas contains interlinked, encyclopedia-style descriptions of more than 1,000 of the most central entities in the dataset – important companies, people, materials, places, processes… The central entities were chosen through a combination of how frequently they are mentioned across the entire dataset and manual curation. Frequency alone is a noisy indicator of importance and centrality. For example, the name “J.C. Willever” appears often in the dataset, even though J.C. Willever was not very central to the photochemical industry. But his name is part of the letterhead of Western Union telegraphs, of which there are very many in the corpus. That is why all central entities have been reviewed and curated by domain experts. For each of the principal languages in the collection, a separate list of frequent entities was compiled to mitigate language bias stemming from the fact that the dataset contains more documents in German and English than, for example, Dutch and Japanese.

The descriptions were created on the basis of text snippets from the dataset. For each entity, a language model receives up to 30 text snippets related to given entity, each up to 3000 characters long. The model is also given basic context about each snippet (such as the year, author and type of the publication). On the basis of this information, the model is asked to compile a description of the entity relevant to the history of photochemistry. The model is asked to take the metadata into account and contextualize sources such as advertisements and corporate histories, and to highlight contradictions in the sources (for example, when sources disagree about the date of an event). Because information in the sources can be both biased and obsolete, description compilation is designed to mimic the scientific process: multiple different sources are retrieved whenever possible. But source diversity is not a guarantee of objectivity. All sources, from advertisements to corporate histories and scientific publications can be partial, outdated or contradictory.

The model only draws on documents in the CINEAGRI corpus. It does not use information from the Internet nor from its internal training data. This means that only sources collected by humans in the archives (which includes corporate correspondence, published and unpublished corporate histories, technical reports etc.) and a human-curated selection of secondary literature (scientific articles, academic books and some grey literature) are used when compiling descriptions and extracting knowledge graph relationships. This ensures that initial data sources are of generally high quality in the sense that their provenance is known and verifiable. But this alone is not a guarantee of veracity.

Every entity description is verified by another language model, called the adjudicator, which receives the description text together with all referenced text snippets. The adjudicator is asked to verify whether every statement made in the description corresponds to the source snippets. Descriptions that fail the verification – either because they contain an unsourced claim, or because the references are incorrect, or for other reasons – are always rejected. Only descriptions adjudicated as well-grounded or as having only minor issues (for example, a correctly referenced document with an incorrectly cited page number) are accepted.

Does adjudication mean that descriptions are definitely accurate and factually correct? No. Adjudication ensures that every statement in an entity description corresponds to the referenced sources. This improves information traceability, but it does not turn a biased or mistaken historical source into an accurate one. If a referenced source contains a factual mistake, that mistake might also be present in the description. Moreover, referenced sources may be obsolete. The resulting text should therefore be read as a documented synthesis of claims, not as an unquestionable account of the past.

Can the adjudicator model make mistakes? Yes, but it is generally reliable. Multiple models have been tested and the results were reviewed by a human expert. The adjudicator model’s results were deemed satisfactory. It is also fairly strict: Roughly 50-60% of all descriptions fail on the first try. They are recompiled until they pass verification.

Structured data extraction

Structured data extraction turns selected text passages from the corpus into orderly, machine-readable claims about entities and their relationships that can be visualized, for example, in a knowledge graph or timeline. The CINEAGRI knowledge graph extraction process begins with a curated entity registry. This carefully manually reviewed, deduplicated and cleaned registry contains around 1600 of the most significant entities in the photochemical industry, along with verified multilingual aliases, geocoordinates, entity type information and other metadata. Included are, for example:

  • prominent people such as George Eastman or members of the Gevaert family, along with various nicknames and spellings of their names in different writing systems;
  • the many variations of company names such as ‘Actiengesellschaft für Anilin-Fabrikation’ and ‘AGFA’;
  • materials such as sodium nitrate with their chemical formulas, historical names and various documented distinctions, such as bone gelatin vs. hide gelatin, natural camphor vs. synthetic camphor;
  • important places such as Wolfen, Rochester or Ashigara, and many others, geocoded onto modern place names.

A custom data schema, loosely modeled on CIDOC CRM and partly inspired by Wikidata, defines which kinds of entities may be connected by what types of relationships. For example, only a person node can be the target of an employment relationship – hence, a relationship like Agfa→EMPLOYSWilhelm Lohöfer is valid, but Berlin→EMPLOYS→35mm film is not.

The CINEAGRI data schema specifies a set of entity types (such as Person, Business, Material, Place, Process, and others), and a list of valid edges for each entity type. For each valid candidate relationship, a constrained extraction step identifies the subject, relationship, object, relevant qualifiers such as dates or roles, a confidence value and an evidence span. To give a simplified example, in order to map and visualize employees of the company AGFA, we first ask the RAG system to find documents related to the question “Whom did AGFA employ?” Up to 30 results are then passed on to the knowledge graph extractor, which combs through the documents and records answers, including useful supplemental information such as “from when until when?” or “in what role?”

GPT-5.5 with reasoning level high is used for structured data extraction. Out of a custom benchmark of 17 commercial and open-weight models, GPT-5.5 high was the top performer across multiple triple extraction metrics, including, most importantly, provenance, precision, and inventory recall. Across these metrics, GPT-5.5 outperformed even newer frontier models such as GPT-5.6 Sol and Kimi K3. A white paper documenting the benchmark is in preparation.

A separate validation process then checks the structured output against the data schema. Claims are separated into accepted, review and rejected outputs. Only claims that survive this validation pass through human curation before they are written to the knowledge graph. Preserving provenance (meaning: documenting which source each claim originates from) is key to the CINEAGRI knowledge graph design. The principal consideration is: Every claim in the knowledge graph must be traceable to a document in the corpus.

This principle makes all relationships in the graph auditable. A user can follow every single statement back to a document, page or text span and inspect the original archival record or scientific paper. It also makes contradictions visible. For example, two documents may disagree about the exact date of a relationship. One document might say “Agfa hired Wilhelm Lohöfer in January 1923,” whereas another might state “Wilhelm Lohöfer started working for Agfa in December 1922.” The CINEAGRI knowledge graph would preserve and show both of these claims without making a judgment about which of them is correct. Remember: The knowledge graph is not a repository of definitive facts; it is a structured compilation of claims extracted from various historical documents.

Data mining and copyright

A majority of the sources in the CINEAGRI dataset are in the public domain. Some are not. Dutch copyright law permits universities and cultural heritage institutions to carry out text and data mining for scientific research on lawfully obtained copyrighted material. Prior permission from copyright holders is not required.

Data ethics: factuality, bias and absences in the dataset

Factuality warning

The CINEAGRI knowledge graph is not a repository of facts or objective truths. The language models used to extract the data from historical sources are not fact-finders. It’s best to think of the dataset and knowledge graph as a structured compilation of claims, and the LLMs as collators of statements and assertions.

The data can be wrong in multiple ways. Errors can compound across the database. Before relying on it, please ensure that you understand these basic types of possible sources of error and bias in the data.

Archival absence

A comprehensive view of the photochemical industry is impossible because many valuable historical documents have been lost forever: Intentionally discarded or destroyed because they were considered unimportant or inconvenient; accidentally destroyed in wars or fires, or lost in relocations. Recods survive unevenly. Some periods are considerably better documented than others, and sometimes the reasons for this are completely banal.

The document collections are patchy, not a coherent set of historical records that continuously covers the entire time span in question. And the information that constitutes the CINEAGRI dataset was extracted from only a subset of those documents: another small sample of the already limited set of documents that survive.

Find out more about blind spots in the dataset and explore archival absences with the interactive document timeline.

Mistakes and biases in the original documents

Documents from which data have been compiled can be mistaken, erroneous, contradictory, or intentionally false. A large portion of the data has been compiled from archival company records and published and unpublished corporate history books, which may be inaccurate or may have intentionally been written to align with the company’s version of historical events.

The atlas is designed to highlight contradictions in the sources rather than hide them. Still, you should treat the visualized relationships and descriptions not as facts, but as statements derived from historical documents and scientific literature, both of which may be biased.

Corporate silence and long-term harm

Labor conditions, waste and pollution, and the photochemical industry’s impact on local communities and ecosystems rarely figure in corporate memory because they are inconvenient to remember. Women and their labor are also nearly entirely missing from the archival record.

The CINEAGRI knowledge graph attempts to counterbalance some of these absences is several ways. Included in the dataset is not just information from primary archival records, but also secondary scientific literature by scholars from various disciplines – such as economic and trade history, media studies, environmental humanities, and area studies – who have investigated the industry over the years. The CINEAGRI data ontology makes an effort to make power relations visible by intentionally introducing entity types such as “Social Group,” an entity that is neither individual like “Person,” nor corporate like “Business,” nor governmental like “Government Agency.” This is grounded in the knowledge that some form of collective bearer entity is necessary for harm modeling, without pretending that such collectivities and relations can be defined and represented with simple dots and lines.

Harm to a community or place is often slow, durational, cumulative. Events and instances where things are simple and clear-cut – for example, an explosion that leads to the death of factory workers or an effluent spill that directly leads to the dying of fish in a river – are the exception. The photochemical industry has, for decades, been a major source of environmental pollution across the world. Materials needed to make film, such as camphor or salpeter, have historically fueled violent conflicts, deforestation and the destruction of ecosystems. Long-term effects that take generations to emerge and recognize are very difficult to capture and express in a knowledge graph like the one utilized by CINEAGRI.

Text recognition errors

Errors in text and handwriting recognition can result in typos and incorrect data. Names, dates and numbers, in particular, are prone to misrecognition. Tabular data, especially in historical tables, can be difficult to digitize correctly, especially in certain cultural contexts, such as historical Japanese tables, which are laid out vertically, flow from right to left, and often use Chinese instead of Arabic numerals. Row and columns may shift, resulting in numerical and interpretation errors. A single misrecognized character can change a name, or the meaning of an entire sentence.

CINEAGRI utilizes text and handwriting recognition models that have been thoroughly tested and deliver exceptionally good word recognition rates. Still, they are not infallible. Many of the underlying archival sources have undergone multiple rounds of photocopying or reformatting, such as from paper records to microfilm and then to digital image. Both can heavily reduce image quality and impair accuracy even when using high-performance text recognition technology.

LLM extraction errors

Underlying all statements in the CINEAGRI knowledge graph is information extracted from a vector-embedded dataset. In simple language, this means that the archival sources have been sliced into text snippets with a certain length, and the meaning of each text snippet is represented as numbers.

This process allows us to search the data independently of language, but it has some drawbacks. The vector embedding can miss data points that are difficult to anchor semantically (such as rare proper nouns and names). A large language model called a retriever selects text snippets in preparation for an answer, and a model called a reranker orders them. Both make decisions about snippet relevance, and each can misjudge the salience of a snippet to a query.

Another LLM extracts structured relationships and compiles descriptions based on those snippets – it also makes autonomous curatorial decisions and linguistic choices. CINEAGRI has mechanisms in place to mitigate bias at all of these stages. The system makes sure that certain types of evidence are always included in the selection set regardless of the retriever’s decision. The system has been carefully tuned and tested, and description texts for the most common entities have undergone multiple stages of human review and curation. Roughly 1,600 of the most central entities have been manually reviewed, linked to external databases such as Wikidata and enriched with multilingual labels and aliases to aid disambiguation and classification.

Nevertheless, multiple large language models are involved at each step, each of which weighs options without supervision and produces text and data that may differ from those a human expert might make. The models may misunderstand or misinterpret data, and extract it incorrectly from the text, resulting in statements that are inaccurate, incomplete or outright wrong. A similarly spelled name might get linked to the wrong person, resulting in factual mistakes. Names from non-Latin writing systems may have been transliterated wrong, or, in the case of Japanese names, even their pronunciation may be uncertain. The spelling of Western names, while more stable, can also be ambiguous: Surnames like “Ilgner” are sometimes spelled “Jlgner” in historical sources. A large language model can fail to recognize that these two spellings refer to the same person.

An extractivist worldview

The CINEAGRI knowledge graph is, in large part, an archive of corporate worldviews. Sites – such as mines and forests – are treated as “resources” in that worldview. Adopting that language potentially reproduces an extractivist understanding of the world in which places, communities and living beings are viewed primarily as carriers of extractable financial value. The CINEAGRI knowledge graph models and visualizes this worldview, but this should not be understood as an endorsement, but as documentation.

This is also true of key relations in the knowledge graph such as “owner of,” which implicitly encode a legal system of property, and corporate property as the default relation to land and materials. As a small counterbalance, the CINEAGRI ontology introduced relation types such as “custodian of” (which documents non-proprietary relationships of care, such as stewardship of land) and “exposed to,” but these are more difficult to identify in and deduce from corporate records.

A colonial vocabulary

A portion of the data has been extracted from sources from the early 20th century, created or published during the colonial and imperialist era. This means that the dataset contains entities and names that are now obsolete, considered harmful or culturally insensitive, or may recall the atrocities of imperialist conquests and colonial occupation. Place names have been mapped to contemporary appellations where known, but some colonial names and terms may persist.

Scroll to Top