grobid

grobidOrgApache-2.0活跃维护

从 PDF 学术论文中自动抽取标题、作者、参考文献等结构化元数据的机器学习工具,支持全文解析与引文提取。

A machine learning software for extracting information from scholarly documents

0.9.1发布于 2026-08-04 06:56 UTC5,226star +5 / 7 天574fork同步于 2026-11-10 11:36 UTC

怎么上手

由 README 提炼,执行前请确认
docker pull grobid/grobid:latest
硬件要求按 README 说明

源码构建需 OpenJDK 21,原生构建支持 64 位 Linux 与 macOS(Intel/ARM);深度学习模型可选 Python 3.10-3.11 + JEP,可选 NVIDIA CUDA GPU 加速;默认 CRF 模型可在普通硬件上开箱运行。

纯 CPU 可运行需要 CUDA
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 PDF 学术文献解析成结构化 XML/TEI 的机器学习工具,适合批量抽取元数据与全文

从 PDF 学术论文中自动抽取标题、作者、参考文献等结构化元数据的机器学习工具,支持全文解析与引文提取。

核心能力

  • 抽取并解析论文头部信息,如标题、摘要、作者、机构、关键词
  • 解析参考文献并识别引用上下文,支持 DOI/PMID 消歧
  • 对 PDF 全文分段结构化,输出章节、段落、图表标题等
  • 提供抽取内容的 PDF 坐标,可生成带标注框的交互 PDF
  • 内置 Web 服务 API、Docker 镜像与多语言批处理客户端

容易踩的坑

默认只用 CRF 模型,参考文献解析等场景需在配置文件中手动启用深度学习模型才更准;深度学习模型需额外安装 Python 3.10-3.11 与 JEP,并可能需下载模型;官方不支持 Windows,且 demo 服务器有配额限制,正式使用需自建服务。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本0.9.1
  1. 0.9.1最新正式版2026-08-04 · 2026-08-04 06:56 UTC

    What's Changed

    Added

    • Training web API to list ongoing trainings and interrupt a running one, releasing the per-model lock #1483
    • Development/model debug API exposing the first-level models for inspecting intermediate results #1439
    • Push-based export of JVM/process runtime metrics over OTLP, complementing the Prometheus scrape endpoint #1479
    • /metrics/prometheus endpoint now serves the Prometheus exposition format with JVM/process metrics, plus Prometheus/Grafana setup docs #1473
    • Linking-aware affiliation_linked metric in the end-to-end HEADER evaluation #1493 #1467
    • Rootless Docker images (Kubernetes/OpenShift friendly) #1442
    • Fail fast at startup when the grobid-home path contains spaces and Wapiti is the configured engine #1481
    • Apache 2.0 licence headers in source files #1485
    • Documentation: community page #1447, PDF-TEI Editor reference #1448, and instructions for adding new model flavors #1465
    • CI: CodeQL analysis workflow #1475, dependabot updates for GitHub Actions #1494, and runs on forks without publishing credentials #1451

    Changed

    • Updated pdfalto to 0.6.2. Notable for GROBID: deterministic output (an uninitialised read and a use-after-free made line/block grouping depend on heap contents, so the same PDF could yield different <TextLine>/<TextBlock> structure across runs), bounded peak memory on very large or vector-heavy documents, superscript citation/affiliation callouts separated from adjacent words (token boundary now driven by pdfalto's own superscript detection), and several text-extraction fixes. The command-line options GROBID passes are unchanged.
    • pdfalto is now given GROBID's configured temp directory (grobid.temp, by default grobid-home/tmp) through TMPDIR. Since 0.6.1 pdfalto streams large page DOMs to a scratch file to bound peak memory and picks its location from TMPDIR, falling back to /tmp — which is tmpfs in most containers, so spilling there leaves peak memory unchanged and risks ENOSPC.
    • Reworked author–affiliation linking into a dedicated, unit-tested AuthorAffiliationAssigner with a priority-based strategy #1467
    • Preserve extracted affiliations when header consolidation rewrites authors, via staged reconciliation #1488
    • Parallelized the end-to-end evaluation scoring phase (~20 min → ~2 min), with upfront setup verification in the Python script #1487
    • Rewrote sentence-segmentation re-alignment as a drift-free forward two-pointer alignment and made language detection thread-safe #1457
    • Language-sensitive tokenization in PDFALTOSaxHandler instead of always using the default analyzer #1480
    • Only one training per model at a time; a concurrent request for the same model returns 409 Conflict #1477
    • Unified training-data file generation between the web API and batch mode #1508
    • Lexicon: added Lexicon.builder() for optional eager gazetteer pre-loading (lazy stays the default); getInstance() is now deprecated #1440
    • Lexicon: added 4 missing ISO 3166-1 country codes (BQ, CW, SS, SX) and migrated AN to its ISO 3166-3 form ANHH
    • Documentation: expanded the end-to-end evaluation and configuration guides and recorded the grobid-evaluation dataset DOI #1419 #1430 #1501
    • Dependency updates: OpenNLP 1.9.4 → 2.5, Jetty, jackson 2.21.4, DeLFT 0.4.6; dropped unused dependencies #1449 #1469 #1423
    • Replaced Powermock with Mockito #1458
    • Adopted Spotless for code formatting #1384, rewrote overloaded methods #1401, and added codespell spell-checking #1365 #1450 #1478

    Fixed

    • Handle the exit codes pdfalto 0.6.1 introduced. Code 5 reports that the ALTO was written correctly but page streaming was disabled mid-run, so peak memory was no longer bounded; both execution paths rejected any non-zero exit and would have discarded these successful conversions. It is now a logged warning. Codes 4 (ALTO write failed) and 98 (allocation failure) are reported as PDFALTO_CONVERSION_FAILURE instead of falling through to `BAD_INPU
  2. 0.9.02026-04-07 · 2026-04-07 20:37 UTC
    查看更新说明

    What's Changed

    Added

    • Conflict of interest and author contributions statement extraction in header and segmentation models #1319
    • Extract figures, tables and equations from back/annex sections #1215
    • Extract URLs from PDF annotations in fulltext #1315
    • Mark consolidated bibliographical references and header explicitly in TEI output #1313
    • Include middle name and format initials in BibTeX output #1356
    • Fetch ORCID from Crossref when not extracted by Grobid #1406
    • Timeout configuration for consolidation requests (separate glutton and Crossref timeout) #1340
    • Lingua as an alternative for language recognition #1239
    • Blingfire as an alternative sentence segmentation engine #1378
    • Native support for Linux ARM 64 architecture
    • Multi-architecture Docker builds with ARM64 support (pdfalto and wapiti binaries for Linux ARM 64)
    • Support for Python environment managers (virtualenv, conda) for DeLFT integration #1010
    • Added version and revision information in the web UI #1390
    • Added health status indicator with periodic updates in the web UI #1403
    • Added more explanation and links to documentation in the web UI #1391
    • More informative /api/health endpoint, failing early when models are partially initialised #1373
    • -modelPath CLI argument for training and eval-mode model loading #1383, #1389
    • Evaluation script for running end-to-end evaluation from the repository root
    • Enabled trivy security code scanning #1295
    • Updated Citation.cff and SWID metadata #1341

    Changed

    • Revised and updated the Crossref integration, with better handling of API limits and errors, in collaboration with Crossref team #1398
    • Upgraded to JDK 21 and Gradle 9 #1321
    • Updated TensorFlow to 2.17 with Python 3.10-3.11 support #1188
    • Updated pdfalto to 0.6.0
    • Updated wapiti to 1.5.1
    • Updated JEP to 4.2.2 #1332
    • Updated DeLFT to > 0.4.1 in documentation and Dockerfiles #1400
    • Updated JRuby to 9.4.12.1 and pragmatic segmenter #1293
    • Updated Docker base images from deprecated openjdk to eclipse-temurin (21.0.10_7)
    • Updated Dropwizard to address Trivy vulnerability in Docker image
    • Updated grobid-lucene-analyzers #1346
    • Updated dependency versions in build.gradle #1377
    • Extensive model retraining: header, segmentation, fulltext, article-light, and article-light-ref models updated across CRF, BidLSTM_CRF_FEATURES, and BidLSTM_ChainCRF_FEATURES architectures
    • Significant expansion of training data for segmentation, fulltext, header, name, and affiliation-address models
    • Refactored training framework for clearer extensibility #1393
    • Updated benchmark results #1392
    • Removed obsolete and unused models #1367
    • Enhanced documentation structure and clarity for newcomers #1310, #1382
    • Return XML by default when no HTTP Accept header is provided #1405
    • CI speed-up #1374

    Fixed

    • Figures, tables and equations identifier uniqueness and overlapping IDs in body and annex #1342
    • IndexOutOfBoundException in ORCID search by annotation #1369
    • Missing logic to correctly get conflicts and credits in the output TEI
    • BibTeX index bug #1409
    • Revision link format in the web UI #1404
    • German wordforms failing to load in the Lexicon #1362
    • Honour instance-level Wapiti params in train() #1383
    • Evaluation script now works from the repository root
    • Docker build crash caused by dynamic Python environment version fetching #1348
    • Dockerfile for ARM Linux #1395
    • Full Docker image build restored #1371
    • preload_embeddings.py crash when download directory doesn't exist
    • Security-oriented regex improvements #1366
    • Coveralls build and Gradle deprecations #1347
    • Numerous training data corrections across all models

    New Contributors

  3. 0.8.22025-05-11 · 2025-05-11 17:40 UTC
    查看更新说明

    What's Changed

    Added

    • New model specialization/variants (flavors) mechanism #1151
    • Specialization/variant process for a lightweight processing that covers other types of scientific articles that are not following the general segmentation schema (e.g., corrections, editorial letters, etc.) #1202
    • Additional training data covering additional cases where the Data Availability statements are over multiple pages #1200
    • Added a flag that allows the output of the raw copyright information in TEI #1181
    • New Docker container for running end-to-end evaluation #1255
    • New Grobid client in Go #1159
    • Make the start/end page for header processing customizable #282
    • Return configuration processing parameters in TEI XML response header #1274

    Changed

    • Update PDFalto recognition of non-standard fonts #1216
    • Revert text that does not belong to graphics as paragraphs instead of dropping it #1266
    • Updated Grobid lucene analyzers for CJK languages #1228

    Fixed

    • Fix URL identification for certain edge cases #1190, #1191, #1185
    • Fix fulltext model training data #1107
    • Fix header model training data #1128
    • Updated the docker image's packages to reduce the vulnerabilities #1173
    • Fixed a bug in the handling of badly formatted figures/tables #1207
    • Correct replacement in the filenames of the fulltext generated files #1204
    • Fixed full-text block start #1203
    • Fix affiliation missing when using DL affiliation-address model #1166
    • Fixed various security vulnerabilities #1125 #1123 #1205
    • Avoid NPE when iterating over annotations that might have null bounding Boxes #1194

    New Contributors

    Full Changelog: https://github.com/kermitt2/grobid/compare/0.8.1...0.8.2

  4. 0.8.12024-09-14 · 2024-09-14 08:29 UTC
    查看更新说明

    Added

    • Identified URLs are now added in the TEI output #1099
    • Added DL models for patent processing #1082
    • Copyrights owner and licenses identification models #1078
    • Add research infrastructure recognition for funding processing #1085
    • Add paragraphs coordinates in the TEI output #1068
    • Specify configuration file with DL models enabled for the full docker image #1117
    • Support for biblio-glutton 0.3 #1086

    Changed

    • Update affiliation process #1069
    • Improved the recognition of URLs using (when available) PDF annotations, such as clickable links
    • Updated TEI schema #1084
    • Review patent process #1082
    • Add Kotlin language to support development and testing #1096

    Fixed

    • Avoid splitting URLs between sentences #1097
    • Add missing sentence segmentation in funding and acknowledgement #1106
    • Docker image was optimized to reduce the needed space #1088
    • Fixed OOBE when processing large quantities of notes #1075
    • Corrected <title> coordinate attribute name #1070
    • Fix missing coordinates in paragraph continuation #1076
    • Fixed JSON log output
    • Fixed notes identification #1124
    • Fixed extraneous semicolon in the training data #1133
    • Reduced security vulnerabilities in the dependencies #1136 #1137
    New Contributors
  5. 0.8.0Version 0.8.0 2023-11-26 · 2023-11-26 19:50 UTC
    查看更新说明

    Added

    • Extraction of funder and funding information with a specific new model, see https://github.com/kermitt2/grobid/pull/1046 for details
    • Optional consolidation of funder with CrossRef Funder Registry
    • Identification of acknowledged entities in the acknowledgement section
    • Optional coordinates in title elements

    Changed

    • Dropwizard upgrade to 4.0
    • Minimum JDK/JVM requirement for building/running the project is now 1.11
    • Logging now with Logback, removal of Log4j2, optional logs in json format
    • General review of logs
    • Enable Github actions / Disable circleci #678

    Fixed

    • Set dynamic memory limit in pdfalto_server #1038
    • Logging in files when training models work now as expected
    • Various dependency upgrades
    • Fix #1051 with possible problematic PDF
    • Fix #1036 for pdfalto memory limit
    • fix readthedocs build #1040
    • fix for null equation #1030
    • Other minor fixes

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    GROBID

    License Coverage Status Documentation Status GitHub release Demo grobidOrg-grobid.hf.space Docker Hub Docker Hub SWH

    [!TIP] Getting started here.

    Summary

    GROBID (or Grobid, but not GroBid nor GroBiD) means GeneRation Of BIbliographic Data.

    GROBID is a machine learning library for extracting, parsing and re-structuring raw documents such as PDF into structured XML/TEI encoded documents with a particular focus on technical and scientific publications. First developments started in 2008 as a hobby, following a suggestion by Laurent Romary (Inria, France). In 2011, the tool has been made available in open source. Work on GROBID has been steady as a side project since the beginning and is expected to continue as such, facilitated in particular to the continuous support of Inria.

    The following functionalities are available:

    • Header extraction and parsing from article in PDF format. The extraction here covers the usual bibliographical information (e.g. title, abstract, authors, affiliations, keywords, etc.).
    • References extraction and parsing from articles in PDF format, around .87 F1-score against on an independent PubMed Central set of 1943 PDF containing 90,125 references, and around .90 on a similar bioRxiv set of 2000 PDF (using the Deep Learning citation model). All the usual publication metadata are covered (including DOI, PMID, etc.).
    • Citation contexts recognition and resolution of the full bibliographical references of the article. The accuracy of citation contexts resolution is between .76 and .91 F1-score depending on the evaluation collection (this corresponds to both the correct identification of the citation callout and its correct association with a full bibliographical reference).
    • Full text extraction and structuring from PDF articles, including a model for the overall document segmentation and models for the structuring of the text body (paragraph, section titles, reference and footnote callouts, figures, tables, data availability statements, etc.).
    • PDF coordinates for extracted information, allowing to create "augmented" interactive PDF based on bounding boxes of the identified structures.
    • Parsing of references in isolation (above .90 F1-score at instance-level, .95 F1-score at field level, using the Deep Learning model).
    • Parsing of names (e.g. person title, forenames, middle name, etc.), in particular author names in header, and author names in references (two distinct models).
    • Parsing of affiliation and address blocks.
    • Parsing of dates, ISO normalized day, month, year.
    • Consolidation/resolution of the extracted bibliographical references using the biblio-glutton service or the CrossRef REST API. In both cases, DOI/PMID resolution performance is higher than 0.95 F1-score from PDF extraction.
    • Extraction and parsing of patent and non-patent references in patent publications.
    • Extraction of Funders and funding information with optional matching of extracted funders with the CrossRef Funder Registry.
    • Identification of copyrights' owner and license associated to the document, e.g. publisher or authors copyrights, CC-BY/CC-BY-NC/etc. license.

    In a complete PDF processing, GROBID manages 68 final labels used to build relatively fine-grained structures, from traditional publication metadata (title, author first/last/middle names, affiliation types, detailed address, journal, volume, issue, pages, DOI, PMID, etc.) to full text structures (section title, paragraph, reference markers, head/foot notes, figure captions, etc.).

    GROBID includes a comprehensive web service API, Docker images, batch processing, a JAVA API, a generic training and evaluation framework (precision, recall, etc., n-fold cross-evaluation), systematic end-to-end benchmarking on thousand documents and the semi-automatic generation of training data.

    GROBID can be considered as production ready. Deployments in production includes ResearchGate, Semantic Scholar, HAL Research Archive, scite.ai, Academia.edu, Internet Archive Scholar, INIST-CNRS, CERN (Invenio), and many more. The tool is designed for speed and high scalability in order to address the full scientific literature corpus.

    Requirements

    • OpenJDK 21 for building GROBID from source
    • Linux (64 bits) or macOS (Intel and ARM) for native builds
    • [Optional] Python 3.10-3.11 with JEP for Deep Learning models
    • [Optional] NVIDIA GPU with CUDA support for faster Deep Learning models

    For detailed installation instructions, including JDK setup and platform-specific requirements, see the Installation documentation.

    If you are upgrading from an earlier version, see the Upgrade guide for version-specific migration notes.

    GROBID should run properly "out of the box" on Linux (64 bits) and macOS (Intel and ARM). We cannot ensure currently support for Windows as we did before (help welcome!).

    GROBID uses Deep Learning models relying on the DeLFT library, a task-agnostic Deep Learning framework for sequence labelling and text classification, via JEP. GROBID can run Deep Learning architectures (RNN or transformers with or without layout feature channels) or with feature engineered CRF (default), or any mixtures of CRF and DL to balance scalability and accuracy. These models use joint text and visual/layout information provided by pdfalto.

    Note that by default the Deep Learning models are not used, only CRF are selected in the default configuration to accommodate "out of the box" hardware. For improved accuracy, you need to select the Deep Learning models to be used in the GROBID configuration file, according to your need and hardware capacities (in particular GPU availability and runtime requirements). Some GROBID Deep Learning models perform significantly better than default CRF, in particular for bibliographical reference parsing, so it is recommended to consider selecting them to use this tool appropriately.

    Demo

    Demo server

    For testing purposes, two public GROBID demo servers are available thanks to Hugging Face Spaces.

    A GROBID demo server with a combination of Deep Learning models and CRF models is available at the following address: https://grobidOrg-grobid.hf.space/. This demo runs however on CPU only. If you have GPU for your own server deployment, it will be significantly faster.

    A faster demo with CRF only is available at https://grobidOrg-grobid-crf.hf.space/. However, accuracy is lower.

    The Web services are documented here.

    Warning: Some quota and query limitation apply to the demo server! Please be courteous and do not overload the demo server. For any serious works, you will need to deploy and use your own Grobid server, see the GROBID and Docker containers documentation for doing that easily and activate some Deep Learning models.

    Try in Play With Docker

    Wait for 30 seconds for Grobid container to be created before opening a browser tab on port 8080. This demo container runs only with CRF models. Note that there is an additional 60s needed when processing a PDF for the first time for the loading of the models on the "cold" container. Then this Grobid container is available just for you during 4 hours.

    Clients

    For facilitating the usage GROBID service at scale, we provide clients written in Python, Java, node.js using the web services for parallel batch processing:

    • Python GROBID client (the most complete one in term of supported services and options)
    • Java GROBID client
    • Node.js GROBID client

    A third party client for Go is available offering functionality similar to the Python client:

    • Go GROBID client

    All these clients will take advantage of the multi-threading for scaling large set of PDF processing. As a consequence, they will be much more efficient than the batch command lines (which use only one thread) and should be preferred.

    For example, we have been able to run the complete full-text processing at around 10.6 PDF per second (around 915,000 PDF per day, around 20M pages per day) with the node.js client listed above during one week on one 16 CPU machine (16 threads, 32GB RAM, no SDD, articles from mainstream publishers), see here (11.3M PDF were processed in 6 days by 2 servers without interruption).

    In addition, a Java example project is available to illustrate how to use GROBID as a Java library: https://github.com/kermitt2/grobid-example. The example project is using GROBID Java API for extracting header metadata and citations from a PDF and output the results in BibTeX format.

    Finally, the following python utilities can be used to create structured full text corpora of scientific articles. The tool simply takes a list of strong identifiers like DOI or PMID, performing the identification of online Open Access PDF, full text harvesting, metadata aggregation and Grobid processing in one workflow at scale: article-dataset-builder

    How GROBID works

    Visit the documentation page describing the system. To summarize, the key design principles of GROBID are:

    Detailed end-to-end benchmarking are available GROBID documentation and continuously updated.

    GROBID Modules

    A series of additional modules have been developed for performing structure aware text mining directly on scholar PDF, reusing GROBID's PDF processing and sequence labelling weaponry:

    • software-mention: recognition of software mentions and associated attributes in scientific literature
    • datastet: identification of sections and sentences introducing datasets in a scientific article, identification of dataset names and attributes (implicit and named datasets) and classification of the type of datasets
    • grobid-quantities: recognition and normalization of physical quantities/measurements
    • grobid-superconductors: recognition of superconductor material and properties in scientific literature
    • entity-fishing, a tool for extracting Wikidata entities from text and document, which can also use Grobid to pre-process scientific articles in PDF, leading to more precise and relevant entity extraction and the capacity to annotate the PDF with interactive layout
    • grobid-ner: named entity recognition
    • grobid-astro: recognition of astronomical entities in scientific papers
    • grobid-bio: a toy bio-entity tagger using BioNLP/NLPBA 2004 dataset
    • grobid-dictionaries: structuring dictionaries in raw PDF format

    Community

    Join the GROBID community to ask questions, get help, and stay up to date — mailing list, Discord, and more on the Community page.

    Release and changes

    See the Changelog.

    License

    GROBID is distributed under Apache 2.0 license.

    The documentation is distributed under CC-0 license and the annotated data under CC-BY license.

    If you contribute to GROBID, you agree to share your contribution following these licenses.

    Main author and contact: Patrice Lopez ([email protected])

    Sponsors

    ej-technologies provided us a free open-source license for its Java Profiler. Click the JProfiler logo below to learn more.

    JProfiler

    JetBrains provided us with a free licence for the development:

    JetBrains logo.

    How to cite

    If you want reference this software, please refer to the present GitHub project, together with its Software Heritage permanent identifier.

    Machine-readable citation metadata are available in CITATION.cff (used by GitHub's "Cite this repository" button) and codemeta.json (CodeMeta, used by Software Heritage).

    For example, the BibTeX would look like this:

    @misc{grobid,
        title = {GROBID},
        howpublished = {\url{https://github.com/grobidOrg/grobid}},
        publisher = {GitHub},
        date = {2008/},
        archivePrefix = {swh},
        eprint = {1:dir:dab86b296e3c3216e2241968f0d63b68e8209d3c}
    }
    

    [!TIP] To fetch the latest SWID you can use the following command line (requires curl and jq):

    curl -s "https://archive.softwareheritage.org/api/1/origin/https://github.com/grobidOrg/grobid/visit/latest/" \
      -H "Accept: application/json" | jq -r '.snapshot' | \
      xargs -I {} curl -s "https://archive.softwareheritage.org/api/1/snapshot/{}/" | \
      jq -r '.branches["refs/heads/master"].target' | \
      xargs -I {} echo "swh:1:dir:{}"
      
    swh:1:dir:324a18113b0c7624a66a21550bd0e8522e328b4e
    

    See the GROBID documentation for more related resources.