• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

grobidOrg / grobid
44%
master: 44%

Build:
Build:
LAST BUILD BRANCH: feature/delft-1.0.0-pytorch
DEFAULT BRANCH: master
Repo Added 19 Jan 2026 12:58PM UTC
Token teyP78tECFj7GsoLVxxuREI5tGJlxw8Ge regen
Build 569 Last
Files 338
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/paragraph-split-after-callout
branch: fix/paragraph-split-after-callout
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/paragraph-split-after-callout
  • 0.9.0
  • 0.9.1
  • bugfix/add-priority-content-type
  • bugfix/avoid-IOBE-in-orcid-search
  • bugfix/codespell-round-two
  • bugfix/correct-git-revision
  • bugfix/docker-arm
  • bugfix/docker-full-build
  • bugfix/fix-149
  • bugfix/fix-15
  • bugfix/fix-671
  • bugfix/fix-728
  • bugfix/fix-849
  • bugfix/fix-classification-delft
  • bugfix/fix-doi-search
  • bugfix/glutton-healthcheck-path
  • bugfix/improve-regexes
  • bugfix/issue-1024
  • bugfix/issue-1355
  • bugfix/issue-271
  • bugfix/issue-465
  • bugfix/issue-512
  • bugfix/issue-716
  • bugfix/issue-849
  • bugfix/issue-920
  • bugfix/jep-env-uv
  • bugfix/jep-shutdown-deadlock
  • bugfix/model-selection-flavours
  • bugfix/patch-lmdb
  • bugfix/reference-segmenter-createTraining
  • bugfix/sentence-segmentation-detection
  • bugfix/spotless
  • bugfix/support-missing-dir
  • bugfix/ziputils-security-advisor
  • bugfixes/docker-retag
  • bugix/correct-revision
  • chore/dependabot
  • chore/remove-powermock
  • chore/remove-unused-models
  • ci/reduce-coveralls
  • ci/release-automation
  • ci/support-forks
  • copilot/fix-founders-extraction-issue
  • copilot/fix-null-pointer-exception
  • copilot/fix-paragraph-segmentation-issue
  • copilot/fix-tokenizer-language-sensitivity
  • copilot/fix-wapiti-jni-space-argument
  • copilot/improve-article-metadata-merging
  • copilot/make-evaluation-friendlier
  • copilot/possibility-to-list-ongoing-trainings
  • dependabot/github_actions/actions/checkout-7
  • dependabot/github_actions/actions/setup-java-5
  • dependabot/github_actions/actions/setup-java-5.6.0
  • dependabot/github_actions/actions/setup-python-6
  • dependabot/github_actions/actions/setup-python-7
  • dependabot/github_actions/docker/build-push-action-7
  • dependabot/github_actions/docker/login-action-4
  • dependabot/github_actions/docker/setup-buildx-action-4
  • dependabot/github_actions/github/codeql-action-4
  • dependabot/github_actions/github/codeql-action-4.37.3
  • dependabot/github_actions/gradle/actions-6
  • dependabot/github_actions/mikepenz/action-junit-report-6
  • dependabot/gradle/gradle-f5b19850ab
  • display-version-in-ui
  • docs/improvements
  • docs/upgrading-0.9.1
  • feature/add-api-status-in-ui
  • feature/add-code-cleaning
  • feature/add-ignore-areas-api
  • feature/add-pdf-tei-editor
  • feature/affiliation-linked-evaluation
  • feature/apache-licence-header
  • feature/auto-update-hf-space
  • feature/blingfire
  • feature/code-formatting
  • feature/codeql
  • feature/codespell
  • feature/coi-ac
  • feature/coi-ac-update-light-models
  • feature/community-page
  • feature/delft-1.0.0-pytorch
  • feature/dependabot
  • feature/development-api
  • feature/docker-summary
  • feature/documentation
  • feature/extract-any-url-in-fulltext
  • feature/fix-bibtex-index
  • feature/improve-actions
  • feature/improve-documentation
  • feature/issue-to-documentation
  • feature/literature-law-flavour
  • feature/literature-law-flavour-eval
  • feature/literature-law-flavour-experiment
  • feature/literature-law-flavour-experiments
  • feature/middle-name-bibtex
  • feature/onnx-models
  • feature/onnx-models-perf
  • feature/onnx-models-perfs
  • feature/otlp-metrics-push
  • feature/prepare-release
  • feature/refactor-tei-formatter
  • feature/refactor-trainers
  • feature/remove-unused-lexicons
  • feature/rename-ui-items
  • feature/revise-consolidation
  • feature/rewrite-overloaded
  • feature/sync-crf-manual-build
  • feature/training-xml-t
  • feature/unpin-lmdb-delft
  • feature/update-benchmarks
  • feature/update-copyright
  • feature/update-delft
  • feature/update-dependencies
  • feature/update-doc-flavor-dev
  • feature/update-editorconfig
  • feature/update-lingua
  • feature/update-pdfalto-0.6.1
  • feature/use-outline-to-structure-head
  • feture/update-documentation
  • fix/author-affiliation-marker-duplication
  • fix/eval-invalid-args-exit-code
  • fix/pdfalto-memory-limit-macos
  • hotfix/0.9.0-docker
  • improvement/affiliation-author
  • improvement/fix-lexicon
  • improvements/fails-on-failures
  • improvements/speed-up-ci
  • master
  • multi-arch-docker-image
  • publish/0.9.0-central
  • refactor/end-to-end-evaluation
  • release/0.9.0
  • release/0.9.1
  • revert/fix-paragraph-split-after-callout
  • rootless
  • rootless-docker
  • security/cmdinjection-threadleak
  • security/jline-cmdinjection-threadleak
  • security/update-dependencies
  • tensorflow-2.16
  • tensorflow-2.16-docker-full

22 Jul 2026 06:39AM UTC coverage: 43.545% (+0.03%) from 43.511%
29900893897

Pull #1517

github

lfoppiano
fix: split paragraphs after a callout on layout, not the sequence label

Re-addresses the real #1482 case (a paragraph that genuinely ends at a
trailing callout) on top of the clean 0.9.0 base restored by the revert,
without the isBeginning() predicate that made the previous attempt split
at nearly every callout.

The decision comes from the layout of the callout and the resumed text:

- Same line as the callout -> continue. The common case (a callout
  inside a paragraph), and it needs no further evidence.
- A line break alone proves nothing, since a paragraph interrupted near
  the right margin also wraps, so a break must also cross a block
  boundary - blocks being the unit pdfalto groups paragraphs into.
- A block boundary also falls inside a paragraph, so the resumed text
  must additionally read like the start of one (upper case or digit).
  This stops continuations, and the punctuation closing the interrupted
  sentence, from being split off.
- Text resuming higher up the page has wrapped to the top of the next
  column, and a page change makes the coordinates incomparable. Neither
  is evidence of a paragraph break.

Splitting requires positive evidence; anything unknown continues the
paragraph, so the worst case degrades to 0.9.0 rather than a new failure
mode. Only two overloads: the layout-aware one, and the 0.9.0-compatible
2-arg used by Table and external callers.

Two details, both found only by instrumenting. LayoutToken
.isNewLineAfter() cannot detect the line break: it is only populated by
enrichWithNewLineInfo(), which the fulltext path never calls, so it is
always false here - the break is read from the Y coordinates. And the
token before a cluster boundary is very often a synthesised space with
no coordinates (x = y = -1), so the comparison skips back to the last
positioned token or every callout looks like a line break.

Full corpus, 11,945 documents vs 0.9.0: <p> 1,170,384 -> 1,177,912
(+0.64%, master +85.5%); paragraphs opening ... (continued)
Pull Request #1517: Fix regression in split paragraphs after a callout on layout

10152 of 25716 branches covered (39.48%)

Branch coverage included in aggregate %.

21245 of 46387 relevant lines covered (45.8%)

1.86 hits per line

Relevant lines Covered
Build:
Build:
46387 RELEVANT LINES 21245 COVERED LINES
1.86 HITS PER LINE
Source Files on fix/paragraph-split-after-callout
  • Tree
  • List 337
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
29900893897 fix/paragraph-split-after-callout fix: split paragraphs after a callout on layout, not the sequence label Re-addresses the real #1482 case (a paragraph that genuinely ends at a trailing callout) on top of the clean 0.9.0 base restored by the revert, without the isBeginning() pred... Pull #1517 22 Jul 2026 07:52AM UTC lfoppiano github
43.54
29872286305 fix/paragraph-split-after-callout chore: spotless Signed-off-by: Luca Foppiano <luca@foppiano.org> Pull #1517 21 Jul 2026 10:17PM UTC lfoppiano github
43.12
See All Builds (569)

Badge your Repo: grobid

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc