Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Reference validity checker

This is a simple command-line tool to check references in a given PDF. The tool was scripted with VSCode and Gemini 3 Pro and proofread and tested by me.

What does it do?

  • Loads an input PDF (locally) or reads references directly from a .bib file (recommended when available — more reliable than PDF parsing)
  • For PDF input: parses the reference section, expecting the format Author List. YEAR. Title of the paper. Potential other information...
    • This may sometimes lead to false negatives due to PDF extraction artefacts.
  • Searches DBLP using the query: [title] [author last names]. All author names are used in the query, so that papers with incorrect authors will not be matched.
  • Checks the top five results to see if:
    • The paper title matches the record in DBLP.
    • The author list has at least one overlapping last name.
  • If no match is found, the reference is reported not found and a list is printed in the console of all the papers that were not found.
  • In case of batch mode, the results are also logged in a reference_check/filename.log file for later inspection.

What should I do with this?

The script is expected to give false negatives. A negative is considered a reference that is not found in DBLP. That means you have to check the flagged references yourself.

It is unlikely to give false positives. If the script returns a list of OK results, you can likely trust the references in the paper.

Installation

Install dependencies

pip install pypdf requests bibtexparser

Running the tool

You can run the tool on a single file with:

python reference_check.py /path/to/pdf/file.pdf

There are other input modes for loading files from a url or in batch mode:

URL

# Downloads the PDF, processes it and deletes it afterward
python reference_check.py https://path_to_pdf.org/file.pdf

BibTeX / BBL file

If you already have a .bib or .bbl file (e.g. exported from your reference manager, generated by LaTeX, or provided as a paper's supplemental), you can skip PDF parsing entirely and check references directly:

python reference_check.py --bib references.bib
python reference_check.py --bib references.bbl

This is more reliable than PDF parsing because the title, authors, and year are read directly from structured fields rather than extracted from PDF text. Use this whenever you have a .bib or .bbl available — it avoids most of the false negatives caused by PDF extraction artefacts.

Both natbib/plain and biblatex/biber .bbl formats are supported.

Batch processing

# Input a path to a folder and process each PDF file in the folder.
python reference_check.py /path/to/folder
# Input the path to a txt file with PDF urls. The txt file should have a single url per line.
python reference_check.py url_list.txt

Output

The results are printed in the console and logged in a reference_check/filename.log file for batch mode for later inspection.

Example output on one of my own papers (https://rubenwiersma.nl/assets/pdf/DeltaConv.pdf), showing only a few records. No LLMs were used in the writing of the paper (it was published before ChatGPT was released). Therefore, you cannot conclude LLM-usage when mismatches show up. You have to check the flags manually.

Checking Submission SingleCheck: Manual Run
URL: https://rubenwiersma.nl/assets/pdf/DeltaConv.pdf
============================================================
Downloading PDF from https://rubenwiersma.nl/assets/pdf/DeltaConv.pdf...
Parsing PDF content...
Extracted 86 references.
Verifying references against DBLP...
ID    Status     Details
------------------------------------------------------------
[ref_1] OK         Detected: Point convolutional neural net... (Query: DBLP: Point convolutional neural networks by extension operators Atzmon Maron Lipman Matan Haggai Yaron)
[ref_2] not found  Queries tried: DBLP: 3DmFV: ThreeDimensional Point Cloud Classification in Real-Time Using Convolutional Neural Networks Ben-Shabat Lindenbaum Fischer

[...]

Found 8 references that could not be matched to DBLP:

[ref_2] Yizhak Ben-Shabat, Michael Lindenbaum, Anath Fischer. 2018. 3DmFV: ThreeDimensional Point Cloud Classification in Real-Time Using Convolutional Neural Networks.
Queries tried: DBLP: 3DmFV: ThreeDimensional Point Cloud Classification in Real-Time Using Convolutional Neural Networks Ben-Shabat Lindenbaum Fischer

[...]

Known issues

Most issues are due to incorrect PDF parsing. Use --bib to bypass PDF parsing entirely if you have a .bib file available. Feel free to open a pull request if you find a good fix for the PDF parser.

  • DBLP allows scraping, but does have a rate limit. This means the script sometimes pauses when it gets a 429 response. This is expected.
  • A paper that uses the numbered citation system ([1] Author names) can lead to incorrect parsing.
  • The script removes dashes from the title to account for line-breaks. This may remove dashes that should be present, leading to false negatives.
  • Special characters in author names may not be matched in DBLP.
  • Quotes are not parsed correctly for DBLP.

About

Checks references in a PDF against DBLP and ArXiv. The PDF parser expects references to be formatted in the ACM author-year style.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages