Skip to content

JSON schema (v12.3)

Top-level blocks of the export produced by bibr chew / POST /papers/extract. The Pydantic model bibr.export.models.PaperExport is the single source of truth for output structure. Schema validation does not establish factual accuracy.

Download the generated JSON Schema. This uses the same schema builder as the checked-in export artifact, including its required-root-field contract.

Top-level blocks

Block Type Description
paper_id str Paper identifier and the key that joins this paper's rows across files: the user-supplied --paper-id, else the input file's name without its extension (bibr batch writes its corpus-unique id, the name of the JSON file). A converter uses the name of source.file_name without its extension.
schema_version Literal['12.3'] Export schema version. Its presence at the root is how readers distinguish v11 and later from all earlier versions.
source SourceExport Identity of the input file: name, SHA-256 digest, and format.
metadata MetadataExport Paper-level metadata: title, abstract, keywords, DOI, paper type and OECD classification, the paper's own journal/venue identity, and research-integrity statement text.
author list[AuthorExport] Authors in byline order, with name, email, corresponding-author flag, ORCID, and contribution roles.
affiliation list[AffiliationExport] Distinct byline affiliations: verbatim text, best-effort parsed components, and the authors they belong to.
funding list[FundingExport] Funders and award numbers parsed from the funding statement.
text list[TextExport] Document text as ordered sentence-level spans, each linked to its paragraph, section and page; caption and footnote rows follow the body.
section list[SectionExport] Sections with their headings, hierarchy and section type.
url list[UrlExport] Hyperlinks in the text, with link text and source sentence.
bib list[BibExport] Reference-list entries, parsed from the printed entries.
xref list[XrefExport] In-text references linking a sentence to a reference-list entry, table, figure, footnote, equation, supplement or section.
figure list[FigureExport] Figures with caption, page and optional image data.
table list[TableExport] Tables with HTML markup, cell contents, caption and page.
footnote list[FootnoteExport] Footnotes and endnotes: the printed marker and the note's text row.
eq list[EqExport] Statistical and mathematical expressions, split into left-hand side, degrees of freedom, comparator and right-hand side.
metadata_match list[MetadataMatchExport] External-service records matched to the paper itself (self-DOI lookup).
affiliation_match list[AffiliationMatchExport] ROR organizations matched to affiliation strings; enrichment runs only.
funding_match list[FundingMatchExport] ROR organizations matched to printed funder names; enrichment runs only.
bib_match list[BibMatchExport] External-service records matched to reference-list entries, one row per hit.
extraction ExtractionExport How this output was produced — everything that is not the paper itself: engines, settings, timings, LLM usage, enrichment, identity receipts, diagnostics, qualification provenance, validation and warnings.

Reading an export

extraction holds everything about how the output was produced. Everything else is the paper: paper_id, schema_version and source identify it and its input file, metadata and the record tables hold what it says, and metadata_match and bib_match hold what external registries returned. Content rows carry no processing fields: classifier scores, citation-detector tiers, consolidation receipts, figure/table piece locations, layout features and the validation result live under extraction, keyed by the rows' IDs.

The root schema_version identifies the output schema; extraction.producer identifies the software that wrote it. Every record table has an integer primary key named after it (text_id, xref_id, …); other *_id columns are foreign keys: text.section_id points to section.section_id, and xref.target_id points to the row named by xref_type. Do not treat IDs as array positions. Absent values are null, never an empty string.

bib holds the parsed printed references. bib_match and metadata_match hold external enrichment separately. Explicit consolidation (fill or replace) can update reference fields and lists the fields it took in extraction.diagnostics.consolidation. See enrichment and consolidation.

Optional parts of extraction may be absent rather than null. extraction.regions requires include_regions=True / --regions; extraction.text_regions requires include_region_meta=True / --region-meta. The validation gate is enabled by default and can be disabled independently of the typed export builder. Inspect extraction.warnings (each a stable code and a message; the codes are listed below) and extraction.validation when reviewing results. The presence of the root schema_version key distinguishes v11 and later from legacy exports. For compatibility, see the export overview.

Nested record fields

These tables describe the models referenced above. Always present is what the published schema's required states: the key is in every export, though its value may be null. A key marked No is left out when its stage did not run or its value is absent. The default is the model constructor's.

SourceExport

Identity of the input file — not of the paper.

Field Type Always present Default Description
file_name str Yes — Name of the input file, without directories.
sha256 str | None Yes — SHA-256 digest of the input file's bytes, as 64 lowercase hexadecimal characters; identical files give the same digest. Null only when the export was made without the input bytes.
input_format Literal['pdf', 'docx', 'jats', 'tei', 'html', 'epub', 'unknown'] Yes — The input's format: 'jats' for JATS XML, 'tei' for TEI XML (GROBID), otherwise 'pdf', 'docx', 'html' or 'epub'; 'unknown' when it could not be determined.

MetadataExport

Paper-level metadata, as printed in the paper.

Field Type Always present Default Description
title str | None Yes — Paper title; null when none was found.
abstract str | None Yes None Abstract text; null when the paper has none or it was not found.
keywords list[str] Yes — Author keywords in printed order; empty when none were found.
doi str | None Yes — The paper's own DOI, bare (10.xxxx/..., no resolver prefix) and lowercase; null when none was found.
pmid str | None Yes None PubMed ID, when the input declares one.
pmcid str | None Yes None PubMed Central ID (PMC…), when the input declares one.
arxiv str | None Yes None arXiv identifier (e.g. 2101.12345), declared by the input, taken from an arXiv DOI, or read from the arXiv stamp on page 1.
language str | None Yes None Language tag the input declares (BCP 47, e.g. 'en'); null for PDFs.
paper_type enum | None Yes None Paper type from bibr's classifier; null when not classified. Its confidence is extraction.diagnostics.paper_classification.paper_type_confidence. One of: empirical, review, meta_analysis, case_study, commentary, corrigendum, erratum, retraction, unknown.
oecd_l1 enum | None Yes None OECD Fields of Science domain; null when not classified. One of: Natural Sciences, Engineering and Technology, Medical and Health Sciences, Agricultural and Veterinary Sciences, Social Sciences, Humanities and the Arts.
oecd_l2 enum | None Yes None OECD Fields of Science subdomain, within oecd_l1; null when not classified. One of: Mathematics, Computer and Information Sciences, Physical Sciences, Chemical Sciences, Earth and Related Environmental Sciences, Biological Sciences, Civil Engineering, Electrical Engineering, Electronic Engineering, Information Engineering, Mechanical Engineering, Chemical Engineering, Materials Engineering, Medical Engineering, Environmental Engineering, Environmental Biotechnology, Industrial Biotechnology, Nano-technology, Basic Medicine, Clinical Medicine, Health Sciences, Medical Biotechnology, Agriculture, Forestry, and Fisheries, Animal and Dairy Science, Veterinary Science, Agricultural Biotechnology, Psychology and Cognitive Sciences, Economics and Business, Education, Sociology, Law, Political Science, Social and Economic Geography, Media and Communications, History and Archaeology, Languages and Literature, Philosophy, Ethics and Religion, Arts (arts, history of arts, performing arts, music).
journal str | None Yes None Journal or venue name from the paper's own front matter.
volume str | None Yes None The paper's own volume, as printed.
issue str | None Yes None The paper's own issue, as printed.
first_page str | None Yes None The paper's own first page or article number, as printed.
last_page str | None Yes None The paper's own last page, as printed.
issn str | None Yes None The journal ISSN, as printed.
publisher str | None Yes None The publisher, as printed.
published str | None Yes None Publication date as printed (free text, not normalized).
published_date str | None Yes None The publication date in published as ISO 8601: YYYY, YYYY-MM or YYYY-MM-DD, as precise as printed; null when absent or ambiguous.
license str | None Yes None License statement or name, as printed.
license_url str | None Yes None License URL: the one printed in license, else the canonical Creative Commons URL when the license is identified.
license_spdx str | None Yes None SPDX identifier of the license (e.g. 'CC-BY-4.0'), for Creative Commons licenses with a known version and CC0.
funding_statement str | None Yes None Funding statement text from the paper's funding section. The funders and award numbers parsed from it are in funding[].
coi_statement str | None Yes None Conflict-of-interest statement text, as printed.
ethics_statement str | None Yes None Ethics approval statement text, as printed.
data_availability str | None Yes None Data-availability statement text, as printed.

AuthorExport

One author of the paper, in byline order.

Field Type Always present Default Description
author_id int Yes — Primary key; 1-based position in the byline.
given str | None Yes — Given name(s) or initials; null for mononyms and group authors.
family str | None Yes — Family name; null for group authors and when not found.
suffix str | None Yes None Name suffix such as 'Jr.' or 'III'.
literal str | None Yes None The whole name of a group or organization author (a consortium, a working group), as printed; given and family are null then. Null for people.
email str | None Yes None Email address, as printed.
corresponding bool Yes — True when the paper marks this author as a corresponding author; false when it does not, or when that is not known.
orcid str | None Yes None ORCID iD as a canonical URI (https://orcid.org/0000-0000-0000-0000).
role list[str] Yes [] Contribution roles from the author-contributions statement, as printed; empty when the paper has none.
credit_roles list[str] Yes [] CRediT roles matched from role, as NISO term URIs (https://credit.niso.org/contributor-roles/...); empty when none matched.

AffiliationExport

One distinct affiliation from the author byline.

Field Type Always present Default Description
affiliation_id int Yes — Primary key; 1-based position in first-seen order.
text str Yes — The affiliation string, verbatim from the byline.
institution str | None Yes None Parsed institution name.
department str | None Yes None Parsed department or unit.
city str | None Yes None Parsed city.
country str | None Yes None Parsed country.
author_ids list[int] Yes [] author[].author_id of every author with this affiliation, in byline order.

FundingExport

One funder parsed from the funding statement.

Field Type Always present Default Description
funding_id int Yes — Primary key; 1-based position.
funder str Yes — Funder name, as printed.
award_ids list[str] Yes [] Grant or award numbers attributed to this funder, as printed.

TextExport

One row of the document text, in reading order: a sentence of the body, or a whole caption or footnote.

Field Type Always present Default Description
text str Yes — The row as plain text: one sentence of the body, or a whole caption or footnote, which can hold several sentences. A display equation is the placeholder '[equation]', with the expression in formatted.
text_id int Yes — Primary key; 1-based reading-order position. Caption and footnote rows come after the body.
paragraph_id int Yes — Paragraph this sentence belongs to (1-based).
section_id int | None Yes — section[].section_id of the section the sentence belongs to; null for a caption or footnote row (figure[], table[] and footnote[] point at those by text_id) and before the first section.
page_number int | None Yes — 1-based page the sentence starts on; null for inputs without pages.
formatted str | None Yes None Source form of the span when it differs from text: a display equation's expression as the input gives it (LaTeX from OCR); null otherwise.

SectionExport

One section of the paper, with its place in the section tree.

Field Type Always present Default Description
section_id int Yes — Primary key; 1-based position in document order.
header str | None Yes — Heading text as printed; null when the section has no heading.
level int Yes — Heading depth: 1 for top-level sections, 2 for their subsections, and so on; 1 when the depth is not known.
parent_section_id int | None Yes — section_id of the parent section; null for top-level sections.
section_type enum | None Yes — Section role (IMRaD plus front and back matter). 'figure', 'table' and 'footnote' mark a printed heading over floats or notes, such as 'Footnotes'; the notes themselves are footnote[] rows, not this section's text. How the role was decided is in extraction.diagnostics.section_classification. One of: title, abstract, intro, method, results, discussion, references, acknowledgment, funding, keywords, endnote, appendix, data_availability, author_contributions, coi, ethics, footnote, table, figure, unknown.

UrlExport

One hyperlink found in the text.

Field Type Always present Default Description
url_id int Yes — Primary key; 1-based position.
href str Yes — Link target, repaired of line-wrap whitespace and a trailing sentence period.
link_text str | None Yes — Visible link text when it differs from the URL; null when the URL itself is the text.
text_id int Yes — text[].text_id of the sentence containing the link.
start int | None Yes None Where the link's visible text (or the URL) starts in text[].text of text_id: a 0-based offset in Unicode code points; null when it could not be located.
end int | None Yes None Where the link's visible text (or the URL) ends (exclusive), in the same units as start.

BibExport

One entry of the paper's reference list, parsed from the printed entry.

Field Type Always present Default Description
bib_id int Yes — Primary key; 1-based position in the reference list.
text_id int | None Yes None text[].text_id of the sentence holding this entry: its row in the reference section, or the note that first cites the work when the references were read from the notes; null when it could not be matched.
bib_type enum | None Yes None Reference type; null when not determined. One of: journal_article, book, book_chapter, dataset, software, preprint, conference_paper, report, thesis, other.
doi str | None Yes None DOI printed in the entry, bare and lowercase.
title str | None Yes None Title of the cited work.
authors str | None Yes None Author list exactly as printed, including punctuation and 'et al.'.
editors str | None Yes None Editor list exactly as printed.
publisher str | None Yes None Publisher.
year int | None Yes None Publication year; null when absent or in press.
year_suffix str | None Yes None Disambiguation letter after the year, e.g. 'a' in '2020a'.
date str | None Yes None Fuller publication date, as printed.
published_date str | None Yes None The publication date as ISO 8601 (YYYY, YYYY-MM or YYYY-MM-DD), as precise as the entry prints it in date or year; consolidation fills it from bib_match[].published_date. Null when neither is known.
container str | None Yes None Journal, book or proceedings the work appeared in.
volume str | None Yes None Volume.
issue str | None Yes None Issue.
first_page str | None Yes None First page or article number.
last_page str | None Yes None Last page.
edition str | None Yes None Edition.
version str | None Yes None Version (software, datasets).
url str | None Yes None URL as printed, repaired of line-wrap artifacts.
is_in_press bool Yes False True when the entry is marked in press or forthcoming; false otherwise, including when that is not known.
arxiv str | None Yes None arXiv identifier.
pmid str | None Yes None PubMed identifier.
series str | None Yes None Book or report series.
access_date str | None Yes None Accessed/retrieved date of an online source, as printed.
note str | None Yes None Trailing free-text note.

XrefExport

One in-text reference from a sentence to a reference-list entry, table, figure, footnote, equation, supplement or section.

Field Type Always present Default Description
xref_id int Yes — Primary key; 1-based position.
target_id int | None Yes — Primary key of the referenced row, by xref_type: bib → bib_id, figure → figure_id, table → table_id, foot → footnote_id. A figure or table reference resolves by the label it prints; extraction.diagnostics.xref_tier says when a paper with no labels fell back to position. Null for equation, section and supplementary references, which name no exported row (the printed label is in contents), and whenever the reference did not resolve.
xref_type Literal['bib', 'table', 'figure', 'foot', 'supplementary', 'equation', 'section'] Yes — What kind of item is referenced.
contents str | None Yes — The citation or reference as printed, e.g. '(Smith, 2020)' or 'Table 2'.
text_id int Yes — text[].text_id of the sentence containing the reference. A footnote reference without start and end was not located in its sentence, so its text_id is approximate. bibr locates no footnote marks: it puts a DOCX note's reference on the last sentence of the paragraph holding the mark and a PDF note's on the sentence before the note, and gives a PDF note printed without a mark no reference.
start int | None Yes None Where the printed reference starts in text[].text of text_id: a 0-based offset in Unicode code points; null when it was not located, as for every footnote reference bibr writes.
end int | None Yes None Where the printed reference ends (exclusive), in the same units as start.

FigureExport

One figure.

Field Type Always present Default Description
figure_id int Yes — Primary key; 1-based position in document order.
label str | None Yes None The printed label without the word, as printed with whitespace removed: '3', '3.1', 'S2', 'A1', 'IV'; a 'Supplementary Figure 4' caption gives 'S4'. In-text references resolve by it. Not unique: the unmerged pieces of a figure split across pages repeat it ('Figure 3. Cont.'), and references target the piece not marked as continued. Null when none was printed or detected.
section_id int | None Yes None section[].section_id of the section the figure is printed in (for PDF, the section being read where it appears); null when it is printed before the first section or its section is not known.
text_id int | None Yes None text[].text_id of the caption's row; null when no caption was found.
image str | None Yes None The whole figure as a data URI naming its media type (data:image/jpeg;base64,...); a figure detected as several panel crops is composited from them, with white between panels. Null unless images are requested.
caption str | None Yes None Caption as printed, starting with its label when one is printed ('Figure 2. Mean ratings…').
page_number int | None Yes — 1-based page the figure starts on.

TableExport

One table.

Field Type Always present Default Description
table_id int Yes — Primary key; 1-based position in document order.
label str | None Yes None The printed label without the word, as printed with whitespace removed: '3', '3.1', 'S2', 'A1', 'IV'; a 'Supplementary Table 4' caption gives 'S4'. In-text references resolve by it. Not unique: the unmerged pieces of a table split across pages repeat it ('Table 3 (continued)'), and references target the piece not marked as continued. Null when none was printed or detected.
section_id int | None Yes None section[].section_id of the section the table is printed in (for PDF, the section being read where it appears); null when it is printed before the first section or its section is not known.
text_id int | None Yes None text[].text_id of the caption's row; null when no caption was found.
html str | None Yes None HTML markup as printed; a table continued across pages has one element per printed piece, joined by newlines.
contents list[list[str]] Yes — Cell text as rows of strings; the first row is the header. A table continued across pages has all its pieces' rows merged.
caption str | None Yes None Caption as printed, starting with its label when one is printed ('Figure 2. Mean ratings…').
page_number int | None Yes — 1-based page the table starts on.

FootnoteExport

One footnote or endnote. Its text is a row of text[], after the body; the row may start with the printed mark, which label holds on its own.

Field Type Always present Default Description
footnote_id int Yes — Primary key; 1-based position in document order.
label str | None Yes — The marker the note is printed with, e.g. '1', '*' or '†'; null when none is printed or detected.
text_id int Yes — text[].text_id of the note's text row.

EqExport

One statistical or mathematical expression found in a sentence, e.g. t(28) = 2.10.

Field Type Always present Default Description
eq_id int Yes — Primary key; 1-based position.
text_id int Yes — text[].text_id of the sentence containing the expression.
start int | None Yes None Where the printed expression starts in text[].text of text_id: a 0-based offset in Unicode code points; null when it could not be located.
end int | None Yes None Where the printed expression ends (exclusive), in the same units as start.
grp_id int Yes — Group of expressions reported together, e.g. the t, p and d of one test.
verbatim str | None Yes None The expression exactly as printed (text[].text sliced by start and end); null when it could not be located.
lhs str Yes — Left-hand side, e.g. 't', 'p' or 'F'.
df str | None Yes — Degrees of freedom printed with the left-hand side, e.g. '28' for t(28); null when none.
comp Literal['=', '<', '>', '≤', '≥', '≈', '≠', '≪', '≫', '~'] Yes — Comparator, normalized: '<=' is '≤', '>=' is '≥', '<<' is '≪' and '>>' is '≫'.
rhs str Yes — Right-hand side, e.g. '2.10' or '.003'.

MetadataMatchExport

One external-service record matched to the paper itself (self-DOI lookup).

Field Type Always present Default Description
service Literal['crossref', 'openalex', 'datacite', 'doi.org', 'openlibrary', 'ror', 'manual', 'other'] Yes — External service that returned the record.
service_id str | None Yes None The record's identifier at that service.
score float | None Yes None Match score, 0–1: 1 for a DOI lookup; a bibliographic search hit scores its title similarity after author and year checks.
bib_type enum | None Yes None Work type at the service. One of: journal_article, book, book_chapter, dataset, software, preprint, conference_paper, report, thesis, other.
doi str | None Yes None DOI of the matched record, lowercase.
title str | None Yes None Title of the matched record.
author list[PersonNameExport] | None Yes None Structured authors of the matched record; null when none.
editor list[PersonNameExport] | None Yes None Structured editors of the matched record; null when none.
publisher str | None Yes None Publisher.
year int | None Yes None Publication year.
published_date str | None Yes None Publication date as ISO 8601 (YYYY-MM or YYYY-MM-DD, as precise as the record); null when the record gives only a year (see year).
container str | None Yes None Journal, book or proceedings.
volume str | None Yes None Volume.
issue str | None Yes None Issue.
first_page str | None Yes None First page or article number.
last_page str | None Yes None Last page.
edition str | None Yes None Edition.
version str | None Yes None Version.
url str | None Yes None URL of the record.
license_url str | None Yes None License URL of the version of record (else of an unspecified version); text-mining licenses are skipped.
license_spdx str | None Yes None SPDX identifier of license_url, for Creative Commons licenses and CC0.
funder list[MatchFunderExport] | None Yes None Funders and awards the record lists.

PersonNameExport

One structured person name from an external service.

Field Type Always present Default Description
family str | None No None Family name.
given str | None No None Given name(s) or initials.
suffix str | None No None Name suffix such as 'Jr.'.
literal str | None No None Whole name of an organization or an unsplittable name.
orcid str | None No None ORCID iD as a canonical URI (https://orcid.org/0000-0000-0000-0000), as the service records it.
affiliation list[MatchOrganizationExport] | None No None The person's affiliations on this record, as the service lists them.

MatchOrganizationExport

An organization named on an external-service record.

Field Type Always present Default Description
name str | None Yes None Organization name, as the service gives it.
ror str | None Yes None ROR ID as a URI (https://ror.org/...), when the record has one.

MatchFunderExport

A funder named on an external-service record.

Field Type Always present Default Description
name str | None Yes None Funder name, as the service gives it.
funder_doi str | None Yes None Open Funder Registry DOI, bare and lowercase (10.13039/...), when recorded.
ror str | None Yes None ROR ID as a URI (https://ror.org/...), when recorded.
award_ids list[str] Yes (computed) Award numbers, as recorded.

AffiliationMatchExport

The ROR organization matched to one affiliation string.

Field Type Always present Default Description
affiliation_id int Yes — affiliation[].affiliation_id this record matches.
service Literal['crossref', 'openalex', 'datacite', 'doi.org', 'openlibrary', 'ror', 'manual', 'other'] Yes — External service that returned the record.
service_id str Yes — The organization's ROR ID as a URI (https://ror.org/...).
score float | None Yes None The service's match score, 0–1 (for ranking, not selection).
name str | None Yes None The organization's display name at ROR.
country_code str | None Yes None ISO 3166-1 alpha-2 country code of the organization.

FundingMatchExport

The ROR organization matched to one printed funder name.

Field Type Always present Default Description
funding_id int Yes — funding[].funding_id this record matches.
service Literal['crossref', 'openalex', 'datacite', 'doi.org', 'openlibrary', 'ror', 'manual', 'other'] Yes — External service that returned the record.
service_id str Yes — The organization's ROR ID as a URI (https://ror.org/...).
score float | None Yes None The service's match score, 0–1 (for ranking, not selection).
name str | None Yes None The organization's display name at ROR.
country_code str | None Yes None ISO 3166-1 alpha-2 country code of the organization.
funder_doi str | None Yes None The organization's Open Funder Registry DOI, bare and lowercase (10.13039/...), when ROR records one.

BibMatchExport

One external-service record matched to a reference-list entry.

Field Type Always present Default Description
bib_id int Yes — bib[].bib_id of the entry this record matches.
service Literal['crossref', 'openalex', 'datacite', 'doi.org', 'openlibrary', 'ror', 'manual', 'other'] Yes — External service that returned the record.
service_id str | None Yes None The record's identifier at that service.
score float | None Yes None Match score, 0–1: 1 for a DOI lookup; a bibliographic search hit scores its title similarity after author and year checks.
bib_type enum | None Yes None Work type at the service. One of: journal_article, book, book_chapter, dataset, software, preprint, conference_paper, report, thesis, other.
doi str | None Yes None DOI of the matched record, lowercase.
title str | None Yes None Title of the matched record.
author list[PersonNameExport] | None Yes None Structured authors of the matched record; null when none.
editor list[PersonNameExport] | None Yes None Structured editors of the matched record; null when none.
publisher str | None Yes None Publisher.
year int | None Yes None Publication year.
published_date str | None Yes None Publication date as ISO 8601 (YYYY-MM or YYYY-MM-DD, as precise as the record); null when the record gives only a year (see year).
container str | None Yes None Journal, book or proceedings.
volume str | None Yes None Volume.
issue str | None Yes None Issue.
first_page str | None Yes None First page or article number.
last_page str | None Yes None Last page.
edition str | None Yes None Edition.
version str | None Yes None Version.
url str | None Yes None URL of the record.
license_url str | None Yes None License URL of the version of record (else of an unspecified version); text-mining licenses are skipped.
license_spdx str | None Yes None SPDX identifier of license_url, for Creative Commons licenses and CC0.
funder list[MatchFunderExport] | None Yes None Funders and awards the record lists.

ExtractionExport

How this output was produced — everything that is not the paper itself.

Field Type Always present Default Description
producer ProducerExport Yes — The software that extracted the content: 'bibr', or another extractor (e.g. 'grobid') whose output a converter wrote into this format.
converter ProducerExport | None Yes None The software that wrote another extractor's output into this format, or rewrote an export (e.g. 'metacheck'); null when the producer wrote this file itself.
completed_at str Yes — When the producer finished extracting the content, as a UTC ISO 8601 timestamp (2026-01-15T09:30:00Z); for bibr, when it wrote the export. A converter keeps the producer's time when it has it, else writes its own.
ocr OcrEngineExport | None Yes None OCR engine; null when the run used none.
llm LlmEngineExport | None Yes None Core extraction LLM; null when the run used none.
settings ExtractionSettingsExport | None No None Resolved per-run settings; omitted when the export was made outside the pipeline.
timings TimingsExport | None No None Wall-clock timings; omitted when untimed.
usage UsageExport | None No None LLM token usage; omitted when usage tracking is off.
enrichment EnrichmentExport | None No None Enrichment completeness; omitted when enrichment did not run.
identity IdentityExport | None No None DOI identity expectations and receipt.
diagnostics DiagnosticsExport | None No None Outcome flags and stage receipts.
fields FieldStatesExport | None No None Per tracked field, whether it was extracted, absent, abstained, failed or not attempted, and by which step. Added in 12.1; omitted when the export was made outside the pipeline.
validation ValidationExport | None No None Output validation gate result: error/warning counts, promotion disposition and the issue list. Omitted when the gate was skipped.
qualification dict[str, Any] | None No None Deployment-qualification provenance read by the external qualification runner: identity SHAs, per-task protocol hashes, native-validity and fallback outcome, request counts. Hashes and counts only, never document text. Omitted when no LLM task ran or usage tracking is off.
warnings list[WarningExport] Yes (computed) Non-fatal processing warnings, each a stable code and a message.
pages list[PageExport] | None No None Size of every page with layout analysis: the frame of the bounding boxes in extraction. A box is [x0, y0, x1, y1] in PDF points (1/72 inch) on the page as displayed (after its /Rotate, within its CropBox), measured from the top-left corner with y increasing downward. Omitted for inputs without pages (DOCX, XML, HTML, ePub).
regions list[RegionExport] | None No None Per-region layout debug payload; opt-in (include_regions).
text_regions list[TextRegionExport] | None No None Per-sentence layout features, one row per text[] row that has them; opt-in (include_region_meta).
float_parts list[FloatPartExport] | None No None Page and bounding box of every printed piece of the figures and tables; omitted when no piece has a location (natively parsed inputs).
trace list[LlmTraceExport] | None No None Captured LLM calls; opt-in (LLM_CAPTURE_TRACE).

ProducerExport

A piece of software: the extractor of the content (extraction.producer) or the converter that wrote it into this format (extraction.converter).

Field Type Always present Default Description
name str Yes — Name of the software, e.g. 'bibr', 'grobid' or 'metacheck'.
version str Yes — Version of the software (not the schema version).
build_sha str | None Yes None Commit SHA of the software's build, when known.

OcrEngineExport

Which OCR engine produced this output. null on the native-parse path.

Field Type Always present Default Description
backend str | None Yes None OCR backend.
model str | None Yes None OCR model identifier.
profile Literal['paddle', 'glm'] | None Yes None OCR profile.

LlmEngineExport

The CORE extraction LLM. null when the run deliberately had none.

Field Type Always present Default Description
provider str | None Yes None LLM provider.
model str | None Yes None Model identifier.
backend str | None Yes None Structured-output backend.

ExtractionSettingsExport

Per-run resolutions of the reference/enrichment knobs.

Field Type Always present Default Description
ref_seg str Yes — Reference segmentation strategy used.
ref_parse str Yes — Reference parsing strategy used.
crossref_enrich bool Yes — Whether Crossref enrichment was enabled.
consolidate str Yes — Consolidation mode: 'off', 'fill' or 'replace'.
native_text_header_footer bool | None No None Whether header and footer regions could be read from the PDF text layer (OCR_NATIVE_TEXT_HEADER_FOOTER). Omitted before schema 12.3.
native_text_formula_number bool | None No None Whether formula_number regions could be read from the PDF text layer (OCR_NATIVE_TEXT_FORMULA_NUMBER). Omitted before schema 12.3.

TimingsExport

Per-stage wall-clock seconds (the export stage's own time is excluded — it is still running when this is built).

Field Type Always present Default Description
stages dict[str, float] | None Yes None Seconds per stage.
total_seconds float | None Yes None Seconds for the whole run.

UsageExport

LLM token usage for the run.

Field Type Always present Default Description
totals UsageTotalsExport Yes — Sum over all breakdown rows.
breakdown list[UsageRowExport] Yes (computed) One row per (label, provider, model).

UsageTotalsExport

Aggregate of every breakdown row — denormalized deliberately.

Field Type Always present Default Description
calls int Yes — Number of calls.
input_tokens int Yes — Input tokens, including cached ones.
cached_input_tokens int Yes — Input tokens served from the provider cache.
output_tokens int Yes — Output tokens.
total_tokens int Yes — Input plus output tokens.

UsageRowExport

One (label, provider, model) LLM usage row.

Field Type Always present Default Description
label str Yes — Call site, e.g. 'extract_authors'.
provider str | None Yes None LLM provider.
model str | None Yes None Model identifier.
calls int Yes — Number of calls.
input_tokens int Yes — Input tokens, including cached ones.
cached_input_tokens int Yes — Input tokens served from the provider cache.
output_tokens int Yes — Output tokens.
total_tokens int Yes — Input plus output tokens.

EnrichmentExport

Reference-enrichment completeness — lets a consumer distinguish a partial (timed-out) enrichment from a complete one without scanning extraction.warnings.

Field Type Always present Default Description
complete bool Yes — False when enrichment stopped before every reference was looked up, e.g. on a timeout.
refs_enriched int Yes — References with at least one bib_match row.
refs_total int Yes — References in bib[].

IdentityExport

Caller-supplied expectations and the DOI-selection receipt.

Field Type Always present Default Description
expected ExpectedIdentityExport | None No None What the caller expected; omitted when nothing was supplied.
receipt IdentityReceiptExport | None No None The DOI-selection receipt; omitted when selection did not run.

ExpectedIdentityExport

What the caller said the input should be (queue-driven runs).

Field Type Always present Default Description
queue_record_id str Yes — Caller's record identifier.
expected_doi str | None Yes None DOI the caller expected.
expected_doi_sha256 str | None Yes None sha256 of the case-folded expected DOI.
expected_title str | None Yes None Title the caller expected.
target_block_hint dict[str, object] | None Yes None Caller's hint for locating the target article in the file.
source_sha256 str | None Yes None sha256 the caller expected for the input file.
doi_required bool Yes False Whether a missing or mismatched DOI fails the run.

IdentityReceiptExport

Which DOI was chosen as the paper's own, and from which candidates.

Field Type Always present Default Description
selected DoiCandidateExport | None Yes None The chosen candidate; null when none qualified.
candidates list[DoiCandidateExport] Yes (computed) Every DOI candidate considered.
issue_codes list[str] Yes (computed) Identity issue codes raised during selection.

DoiCandidateExport

One source-visible DOI and where it was read.

Field Type Always present Default Description
raw str Yes — The DOI as printed.
normalized str Yes — The DOI normalized for comparison.
source_kind str Yes — Where it was read: 'sentence', 'header', 'footer', 'structured_metadata', 'publication_region' or 'text_layer'; 'link_annotation', 'pdf_info' or 'hidden_text' (text the PDF never prints, since 12.3) for an agreement-only row.
page int | None Yes — 1-based page, when known.
section_id int | None Yes — section[].section_id, when known.
section_type str | None Yes — section_type of that section, when known; 'figure', 'table' or 'footnote' for a caption or footnote row, whose section_id is null.
region_index int | None Yes — 0-based region position on the page; see the model description.
region_type str | None Yes — Layout class of that region.
text_id int | None Yes — text[].text_id of the sentence, when from text.
marker_kind str Yes — Label printed before the DOI, e.g. 'article_doi', 'data_doi', 'structured_doi' or 'first_published_as' (a repository banner); for a link row 'link_uri', for a document-information row its key, for a hidden-text row 'hidden_text'.
repeated_header_footer_count int Yes — On how many pages the same DOI appears as header or footer furniture.
semantic_context str Yes — Surrounding-context class used in selection; for a 'hidden_text' row 'hidden_text_agreement' when it names the selected DOI, else 'hidden_text'.
selection_tier int Yes — Selection strength: 4 matches the caller's expected DOI, 3 is an explicit self-identification, 2 is front matter or repeated furniture, 1 is uncontested and untyped.
rejection_reason str | None Yes None Why the candidate was not selected, e.g. 'reference_candidate', 'component_candidate', 'line_join_overrun' (the DOI ran on into the next printed field), 'edge_truncated' (since 12.3: a text-layer region's box cut the DOI short and a longer candidate completes it) or 'agreement_only'; null when eligible.

DiagnosticsExport

Outcome flags and stage receipts — never raw payloads.

Field Type Always present Default Description
text_quality float | None Yes None Text-layer quality score, 0–1; null when not measured.
references_complete bool Yes True False when reference extraction is known to be incomplete.
ref_seg_fallback_used bool Yes False Whether reference segmentation fell back to the CRF model.
section_classification list[SectionClassificationExport] | None No None One row per section[] row: how its section_type was decided.
paper_classification PaperClassificationExport | None No None Confidence of metadata.paper_type and metadata.oecd_*.
xref_tier list[XrefTierExport] | None No None How each bibliography, figure and table xref that recorded it was linked.
citation_linking CitationLinkingExport | None No None Receipt for inline citation linking.
caption_assignment CaptionAssignmentReceiptExport | None No None Receipt for caption-to-float assignment.
reference_yield ReferenceYieldExport | None No None Receipt for reference segmentation and yield.
reference_review ReferenceReviewExport | None No None Receipt for automatic fine-tuned review of NER references.
consolidation list[ConsolidationExport] | None No None Per modified reference, the bib[] fields consolidation took from bib_match; omitted when consolidation did not run.
verification list[VerificationExport] | None No None Per reference with a confident bib_match record, how its parsed volume, issue and pages compare with the record; omitted when verification did not run.

SectionClassificationExport

How one section's section_type was decided.

Field Type Always present Default Description
section_id int Yes — section[].section_id.
score float | None Yes — Classifier confidence, 0–1; null when not scored.
source str | None Yes — Which tier decided the type: 'exact_alias', 'substring_alias' or 'alias_prior' (heading lookup), 'model' (trained classifier), 'llm', 'parent_context', 'title', 'implicit', 'positional', 'appendix_repair' or 'imrad_dedup'; null when unclassified.

PaperClassificationExport

Confidence of the paper-level classifications in metadata.

Field Type Always present Default Description
paper_type_confidence float | None Yes None Confidence of metadata.paper_type, 0–1.
oecd_confidence float | None Yes None Confidence of metadata.oecd_l1 and oecd_l2, 0–1.

XrefTierExport

How one bibliography, figure or table xref was linked.

Field Type Always present Default Description
xref_id int Yes — xref[].xref_id.
tier Literal['numeric', 'paren_numeric', 'flattened_superscript', 'author_year', 'llm', 'label', 'position'] Yes — How the link was made: for a bib reference, the citation detector that found it; for a figure or table reference, 'label' (matched against the printed labels) or 'position' (no float of that kind has a label, so the printed number was taken as a position).

CitationLinkingExport

Evidence-bearing receipt for inline citation linking.

Field Type Always present Default Description
style_scores dict[str, float] Yes — Score per citation style for this paper.
candidates list[CitationCandidateExport] Yes — Every candidate considered.
resolved_candidate_fraction float | None Yes — Share of candidates linked to at least one reference.
unique_linked_bib_fraction float | None Yes — Share of references cited at least once.

CitationCandidateExport

One in-text citation the detector considered.

Field Type Always present Default Description
text_id int Yes — text[].text_id of the sentence.
start int Yes — Start character offset within the sentence.
end int Yes — End character offset (exclusive).
raw str Yes — The citation text as printed.
style str Yes — Citation style the candidate was read as.
bib_ids list[int] Yes — bib[].bib_id values the candidate links to.
evidence list[str] Yes — Signals supporting the link.
confidence float Yes — Detector confidence.
accepted bool Yes — Whether the candidate became an xref row.
rejection_reasons list[str] Yes — Why a rejected candidate was dropped.

CaptionAssignmentReceiptExport

How captions were matched to figures and tables.

Field Type Always present Default Description
candidates list[CaptionCandidateExport] Yes — Every caption found.
assignments list[CaptionAssignmentExport] Yes — Every assignment decision.

CaptionCandidateExport

One caption found in the source.

Field Type Always present Default Description
caption_id str Yes — Receipt-local caption identifier.
text str Yes — Caption text.
object_type str Yes — 'figure' or 'table'.
page_number int | None Yes — 1-based page.
bbox list[float] | None Yes — Bounding box [x0, y0, x1, y1] in PDF points from the top-left corner of the displayed page (see extraction.pages).
source_index int Yes — Position of the caption in the source order.

CaptionAssignmentExport

One caption-to-float decision.

Field Type Always present Default Description
caption_id str Yes — caption_id of the caption.
object_id str | None Yes — 'figure:' or 'table:' it was assigned to; null when unassigned, or when that float did not survive to the export.
score float Yes — Assignment score.
reasons list[str] Yes — Signals behind the decision.
ambiguous bool Yes False Whether another float scored as well.

ReferenceYieldExport

How many references were found, and how the reference section was split.

Field Type Always present Default Description
credible_source_starts int | None Yes — Entry starts visible in the source reference section.
attempts list[ReferenceSegmentationAttemptExport] Yes — Every segmentation attempt.
selected_spans list[list[int]] Yes — Spans of the selected attempt.
source_character_coverage float | None Yes — Share of the reference section's characters covered by entries.
parsed_count int Yes — Entries parsed.
valid_count int Yes — Parsed entries that passed validity checks.
duplicate_rate float Yes — Share of entries that duplicate another.
reason_flags list[str] Yes — Yield warnings, e.g. suspected under-extraction.

ReferenceSegmentationAttemptExport

One attempt at splitting the reference section into entries.

Field Type Always present Default Description
strategy str Yes — Segmentation strategy tried.
spans list[list[int]] Yes — Character spans [start, end] of the entries found.
credible_starts int | None Yes — Entries that start like a reference.
selected bool Yes — Whether this attempt was used.
reason_flags list[str] Yes — Why the attempt was or was not selected.

ReferenceReviewExport

Bounded fine-tuned review of flagged NER references; no confidence claim.

Field Type Always present Default Description
model str | None Yes — Served fine-tuned model or immutable adapter alias.
status Literal['configured', 'not_configured'] Yes — Whether a dedicated reference endpoint was configured.
flagged int Yes — NER references carrying at least one routing signal.
attempted int Yes — References submitted for fine-tuned review.
accepted int Yes — Reviews accepted as improved source-supported parses.
failed int Yes — Invalid, truncated or failed reviews; original NER retained.
rejected int Yes — Valid reviews that did not improve the routing checks.
skipped int Yes — Flagged references left on NER due to configuration or budget.
reasons dict[str, int] Yes — Counts by routing signal; signals are not calibrated confidence.

ConsolidationExport

Fields of one reference that consolidation took from bib_match.

Field Type Always present Default Description
bib_id int Yes — bib[].bib_id of the modified entry.
fields list[str] Yes — bib[] field names filled or replaced, in field order.

VerificationExport

How one reference's parsed locators compare with its matched record.

Field Type Always present Default Description
bib_id int Yes — bib[].bib_id of the checked entry.
service Literal['crossref', 'openalex', 'datacite', 'doi.org', 'openlibrary', 'ror', 'manual', 'other'] Yes — Service of the bib_match record checked.
volume enum | None No None bib[].volume. One of: agree, filled, corrected, disagree.
issue enum | None No None bib[].issue. One of: agree, filled, corrected, disagree.
first_page enum | None No None bib[].first_page. One of: agree, filled, corrected, disagree.
last_page enum | None No None bib[].last_page. One of: agree, filled, corrected, disagree.

FieldStatesExport

State of each tracked field, keyed by its export name.

Field Type Always present Default Description
title FieldRecordExport Yes — metadata.title.
author FieldRecordExport Yes — The author table.
abstract FieldRecordExport Yes — metadata.abstract.
keywords FieldRecordExport Yes — metadata.keywords.
doi FieldRecordExport Yes — metadata.doi.
published FieldRecordExport Yes — metadata.published (and published_date, derived from it).
journal FieldRecordExport Yes — metadata.journal.
funding_statement FieldRecordExport Yes — metadata.funding_statement.
funding FieldRecordExport Yes — The funding table, parsed from the funding statement.
paper_type FieldRecordExport Yes — metadata.paper_type.
bib FieldRecordExport Yes — The bib table (the reference list).

FieldRecordExport

What happened to one field (extraction.fields).

Field Type Always present Default Description
state Literal['extracted', 'absent', 'abstained', 'failed', 'not_attempted'] Yes — 'extracted' (a value was exported), 'absent' (the extractor ran and found none), 'abstained' (it declined to choose between candidates), 'failed' (the step that produces it failed, so the value is missing) or 'not_attempted' (the run did not try, as with no LLM or references off). A field with a value is always 'extracted'.
source str | None Yes — The step that produced the value, e.g. 'llm', 'layout_title', 'front_matter_candidate', 'doc_info', 'keywords_section', 'identity', 'classifier', 'native' (declared by the input); for doi, the selected identity candidate's source_kind; for a failed field the step that failed. Null when unknown or when nothing was produced.
issues list[str] Yes — Codes of the extraction.warnings or extraction.validation.issues entries that explain this state, such as VAL_METADATA_FIELD_FAILED or AUTHORS_TRUNCATED.
rule str | None No None The rule of the field's decision that chose the value or its absence, e.g. 'extracted', 'selected_record_title', 'layout_title_fallback', 'abstract_section_fallback', 'correction_notice', 'abstained'. Omitted when the field has no such decision (doi, bib), and in exports that predate it.

ValidationExport

Output validation gate result and promotion disposition.

Field Type Always present Default Description
errors int Yes — Issues with severity 'error'.
warnings int Yes — Issues with severity 'warning'.
blocking int Yes 0 Issues that block promotion.
promotable bool Yes True True when no issue blocks promotion.
issues list[ValidationIssueExport] Yes — Every finding.

ValidationIssueExport

One finding of the output validation gate.

Field Type Always present Default Description
code str Yes — Stable issue code, e.g. 'VAL_AUTHOR_BLANK'.
severity Literal['error', 'warning'] Yes — 'error' or 'warning'.
message str Yes — Human-readable description.
origin_stage str Yes 'export' Pipeline stage that raised it.
evidence_ids list[str] Yes (computed) Identifiers of the rows involved.
count int Yes — Number of occurrences.
blocking bool Yes False Whether it prevents promotion.

WarningExport

One non-fatal processing warning.

Field Type Always present Default Description
code str Yes — Stable, machine-readable warning code in UPPER_SNAKE case, e.g. 'OCR_PAGE_FAILED'. bibr's codes are listed in its JSON schema reference; other producers and converters may add their own, so readers must accept a code they do not know. A converter starts its own codes with its name ('METACHECK_…'), so they cannot collide with the producer's.
message str Yes — Human-readable details, such as the page, counts or exception type.

PageExport

Size of one page of the input document, the frame of every bounding box.

Field Type Always present Default Description
page_number int Yes — 1-based page number.
width float Yes — Width of the page as displayed, in PDF points (1/72 inch).
height float Yes — Height of the page as displayed, in PDF points.

RegionExport

One layout region of a page (opt-in include_regions debug payload).

Field Type Always present Default Description
page int Yes — 1-based page number.
index int Yes — 0-based position of the region among its page's regions after OCR post-processing.
label str | None Yes — Layout class, e.g. 'text', 'title', 'table'.
bbox list[float] | None Yes — Bounding box [x0, y0, x1, y1] in PDF points from the top-left corner of the displayed page (see extraction.pages).
font_size float | None Yes None Dominant font size, in points.
font_weight float | None Yes None Dominant font weight.
font_bold bool | None Yes None Whether the dominant font is bold.
section_id int | None Yes None section[].section_id the region was assigned to.
content str | None Yes None Region text after post-processing.
raw_ocr_content str | None Yes None Region text as OCR returned it.
char_density float | None Yes None Characters per square point of bounding-box area.
estimated_line_height float | None Yes None Bounding-box height divided by the region's line count, in points.
source Literal['text_layer', 'ocr'] | None No None Where the region's text came from: 'text_layer' (the PDF's own text layer, including a scanned page's hidden OCR layer used when OCR returned nothing) or 'ocr' (a region merged from both is 'ocr'). Omitted for a region without text, and before schema 12.3.
ocr_backend str | None No None The OCR backend that read an 'ocr' region: extraction.ocr.backend, or the consensus or escalation recognizer whose reading replaced it. Omitted for other regions, and before schema 12.3.

TextRegionExport

Layout features of one text[] row (opt-in include_region_meta; training and debug payload).

Field Type Always present Default Description
text_id int Yes — text[].text_id these features describe.
font_size float | None Yes None Font size, in points.
font_bold bool | None Yes None Whether the font is bold.
is_italic bool | None Yes None Whether the font is italic.
page_number int | None Yes None 1-based page of the source region.
bbox list[float] | None Yes None Bounding box of the source region: [x0, y0, x1, y1] in PDF points from the top-left corner of the displayed page (see extraction.pages).
region_type str | None Yes None Layout class of the source region.

FloatPartExport

Where one physical piece of a figure or table was printed: a panel crop, or one page of a table continued across pages.

Field Type Always present Default Description
object_type Literal['figure', 'table'] Yes — 'figure' or 'table'.
object_id int Yes — figure[].figure_id or table[].table_id, by object_type.
part_index int Yes — 1-based position of the piece within its object.
page_number int | None Yes — 1-based page the piece is printed on.
bbox list[float] | None Yes — Bounding box [x0, y0, x1, y1] in PDF points from the top-left corner of the displayed page (see extraction.pages).

LlmTraceExport

One LLM call's captured prompt and raw response.

Field Type Always present Default Description
label str Yes — Call site.
provider str | None Yes None LLM provider.
model str | None Yes None Model identifier.
messages list[dict] Yes (computed) Chat messages sent.
raw_completion str | None Yes None Raw model output.
parsed_ok bool Yes — Whether the output parsed into the expected structure.
finish_reason str | None Yes None Provider finish reason.
params dict Yes (computed) Resolved sampling parameters, provider-shaped.
attempt int Yes 1 Attempt number; currently always 1.
error str | None Yes None Error message of a failed call.

Warning codes

The codes bibr writes to extraction.warnings[].code. The schema pins their form (UPPER_SNAKE), not this list: another producer of the format may add codes of its own, and a later bibr may add more.

Code Meaning
OCR_REGION_FAILED OCR of a layout region failed; its text is missing.
OCR_PAGE_FAILED OCR of a whole page failed; its text is missing.
OCR_OUTPUT_TRUNCATED OCR output for a region stopped at the generation limit; its text may be cut off.
OCR_TABLE_INCOMPLETE OCR output for a table stopped early or is not a closed grid; the table may be incomplete.
OCR_TABLE_MALFORMED The spans of an OCR table could not be resolved; the table was kept without merged cells.
OCR_TABLE_DROPPED Table regions could not be parsed and were dropped.
OCR_CONTROL_CHARS OCR output contained control characters; section headers and references may be unreliable.
OCR_NATIVE_TEXT_PUA_FALLBACK Embedded PDF text used private-use characters; those regions were read with OCR instead.
OCR_TEXT_LAYER_FALLBACK OCR returned no text for regions of a scanned page (blank answers or failed requests); they were read from the page's invisible text layer instead.
OCR_RECOGNIZERS_DISAGREE On scanned pages, a second OCR recognizer read some regions differently; the regions that disagreed most were escalated or flagged (regions[]._ocr_consensus).
SCAN_ARTICLE_SPLIT Regions of neighbouring articles on scanned pages (the previous article's tail, the next article's start, floats above the title) were dropped before parsing.
LOW_TEXT_QUALITY The text-quality score is below the warning threshold.
PAGE_DPI_REDUCED A page too large for the render budget at the configured DPI was rendered at a lower DPI for layout and OCR.
SECTION_CLASSIFIER_DEGRADED The trained section classifier did not answer; the LLM classified the section headers.
SECTION_CLASSIFIER_LLM_FAILED The LLM section classification call failed; the headers it was asked about keep an alias prior or stay unknown.
IMPLICIT_SECTIONS_LLM_FAILED The LLM front-matter section detection call failed; the positional page-1 heuristic placed the abstract.
PAPER_CLASSIFIER_DEGRADED The trained paper classifier did not answer; the LLM classified the paper.
PAPER_CLASSIFICATION_FAILED Paper classification failed; paper_type and the OECD fields are empty.
AUTHORS_EMPTY No authors were extracted from a paper that is not a correction notice.
AUTHORS_FABRICATED Extracted authors were discarded because none appears in the text the extraction was given.
AUTHORS_ANOMALY The extracted author list looked degenerate and was trimmed or emptied.
AUTHORS_LLM_FAILED The author LLM call failed; the authors come from the empty-author recovery or a fallback, or are empty.
AUTHORS_TRUNCATED The author response stopped at the output-token limit; its complete leading authors were kept, and the list may be incomplete.
AUTHORS_PARTIAL The author response failed validation; the leading authors that validated were kept, and the list may be incomplete.
LLM_RESPONSE_REPAIRED A finished core-metadata LLM response failed validation and was repaired locally (invalid backslash escapes, or prose around its JSON); the repaired response passed the same validation.
STATEMENT_LEXICAL_FALLBACK A research-integrity statement was filled by lexical anchor matching.
RESEARCH_INTEGRITY_LLM_FAILED The research-integrity LLM call failed; structured funding, author roles and parsed affiliation parts are missing.
EQUATION_LLM_FALLBACK_TIMEOUT The equation LLM fallback timed out; only regex-extracted equations are kept.
EQUATION_LLM_FALLBACK_FAILED The equation LLM fallback failed for some or all batches; their candidate sentences keep only regex-extracted equations.
CITATION_LLM_FAILED The LLM citation-resolution call failed; the ambiguous in-text citations it was asked about stay unlinked.
REF_SECTION_NOT_FOUND No reference section was found; the reference list is empty unless the references were read from the notes (REF_FOOTNOTE_CITATIONS).
REF_SECTION_INFERRED No heading was classified as the reference section; layout found reference regions, so the last unclassified section was taken as the reference list.
REF_FOOTNOTE_CITATIONS No reference list was located, or the one located yielded at most two references; the references were read from the citations in the paper's footnotes and endnotes, one per cited work. The paper may still print a list the locator missed.
REF_SEG_GEOM_CASCADE Geometry reference segmentation declined; the next tier segmented the references.
REF_SEG_REGION_CASCADE Region-anchor reference segmentation declined or found too few references; the next tier segmented them.
REF_SEG_REGION_ERROR Region-anchor reference segmentation raised an error.
REF_SEG_REGION_RECOVERY References were segmented from layout regions after another tier declined.
REF_SEG_CRF_FALLBACK LLM reference segmentation failed or is disabled; segmentation fell back to layout regions or the CRF.
REF_SEG_CRF_ERROR The CRF reference segmenter raised an error.
REF_SEG_MARKER_SPLIT_RECOVERY Every segmenter failed; the references were split on their printed markers.
REF_SEG_FAILED A non-empty reference section produced no references.
REF_SEG_MERGE_SPLIT Reference strings holding several references were split.
REF_PARSE_NER_FALLBACK LLM reference parsing failed or skipped entries; the local NER parser parsed them.
REF_PARSE_LOST References were dropped: LLM parsing failed on them or returned them empty, and no fallback recovered them.
REF_PARSE_SALVAGE_RECOVERY Complete references were salvaged from a truncated LLM completion.
REF_PARSE_SPLIT_RECOVERY References were re-parsed in smaller LLM batches after a batch failed.
REF_PARSE_TRUNCATED References longer than the NER parser's input window were parsed from their start only; fields after it (often pages, DOI or URL) may be missing.
REF_PARSE_FINALIZE_FAILED Cleaning up a parsed reference's fields (page range, DOI, Vancouver tail) raised an error; that reference keeps its fields as parsed.
REF_EXTRACTION_ERROR Reference extraction raised an unexpected error; the references are missing.
REF_UNDER_EXTRACTION_SUSPECTED Far fewer references were parsed than the body cites; reference entries may have been dropped.
CROSSREF_ENRICHMENT_TIMEOUT Crossref enrichment stopped at its per-paper time budget.
CROSSREF_ENRICHMENT_FAILED Crossref enrichment failed.
ENRICHMENT_LOOKUP_FAILED A registry lookup for a reference or the paper's DOI failed.
RESOLVER_FALLBACK_TIMEOUT The resolver fallback stopped at its time budget.
RESOLVER_FALLBACK_FAILED The resolver fallback failed.
ROR_MATCHING_TIMEOUT ROR matching stopped at its time budget; some affiliation and funder strings are unmatched.
ROR_MATCHING_FAILED ROR lookups failed (an HTTP error, a transport failure, the pause after ROR answered 429 or 403, or bibr's own ROR request budget spent until after the paper's ROR time budget); those affiliation and funder strings are unmatched.
ENRICHER_FAILED An enricher raised an unexpected error.
ENRICHMENT_INCOMPLETE Enrichment ended incomplete; the message is the reason recorded with the checkpoint.
CONSOLIDATE_WITHOUT_ENRICHMENT Consolidation was requested but enrichment is off, so there were no matches to merge.
URL_MALFORMED_DROPPED A link was dropped from the export as malformed; the URL is lost from the payload.
EPUB_SPINE_MEMBER_SKIPPED An ePub spine member was missing from the archive; its text is absent from the export.
DOCX_TABLE_DROPPED A DOCX table had more grid cells than the per-table limit, or took the document past its limit on grid cells or cell text (a merged cell counts once per grid cell it covers), and was dropped.
DOCX_FIGURES_DROPPED A DOCX had more pictures than the figure limit; the pictures past it were dropped.
DOCX_FIGURE_IMAGES_OMITTED The images of a DOCX's figures passed the image data limit (an image counts once per figure showing it); the figures past it are kept without an image.
TABLE_CONTENTS_OMITTED An HTML, ePub or JATS table expanded far past its markup, or its size as rendered (escaped text and cell markup in every cell, a spanned cell's text once per cell it covers) or its cells passed the table limits; it is kept without contents when its caption labels it (JATS: when it has a label or caption) and dropped otherwise.