A web-based tool to anonymize research papers by removing author names, affiliations, and other identifying information before peer review.
- 📂 Select input and output folders
- 📄 Supports PDF, DOC, DOCX files
- 🔄 Automatic DOC/DOCX → PDF conversion using Microsoft Word COM
- 🖱️ Interactive PDF viewer with drag-to-select redaction
- ✂️ Remove selected regions precisely (word-level redaction)
- 👁️ Preview removals before saving
- ↩️ Undo applied redactions
- 💾 Save anonymized files to output folder
- 🔗 Merge acknowledgement document (optional)
- 🧹 Removes PDF metadata for full anonymization
Anonymizer-Paper/
│
├── backend/
│ ├── app.py # FastAPI backend
│ ├── converter.py # DOC/DOCX → PDF conversion (Word COM)
│ ├── pdf_editor.py # Redaction + metadata removal
│ ├── utils.py # File utilities
│ ├── requirements.txt # Dependencies
│ └── temp/ # Temporary converted PDFs
│
├── input/ # Input papers
├── output/ # Anonymized papers
│
├── app.js # Frontend logic
├── index.html # UI
├── style.css # Styling
.
├── app.py # FastAPI backend
├── converter.py # DOC/DOCX → PDF conversion (Word COM)
├── pdf_editor.py # Redaction + metadata removal
├── utils.py # File utilities
├── requirements.txt # Dependencies
│
├── index.html # Frontend UI
├── app.js # Frontend logic
├── style.css # UI styling
│
├── input/ # Input papers
├── output/ # Anonymized papers
├── temp/ # Temporary converted PDFs
git clone <repo-url>
cd paper-anonymizerpython -m venv .venv
.venv\Scripts\activate # Windowspip install -r requirements.txtDependencies include:
- FastAPI
- PyMuPDF
- pywin32 (for Word conversion)
python -m win32com.client.makepyThen select:
Microsoft Word XX.X Object Library
- Windows OS
- Microsoft Word installed
uvicorn app:app --reloadServer runs at:
http://localhost:8000
Open:
index.html
Or run via Live Server:
http://localhost:63342/.../index.html
- Backend lists files using
list_files() - DOC/DOCX files are converted using Word COM
- Uses PDF.js to render pages in browser
- Text layer enables accurate selection
- User drags to select regions
- Coordinates are converted to PDF space
From pdf_editor.py:
-
Extracts words using:
page.get_text("words")
-
Removes only words intersecting selection
-
Uses overlap threshold (>20%) for accuracy
doc.set_metadata({})
doc.del_xml_metadata()- Select input & output folders
- Choose a paper from sidebar
- Drag to select author/affiliation area
- Click REMOVE (preview)
- Click SAVE to finalize
- (Optional) Upload acknowledgement and click MERGE & SAVE
- Word → PDF conversion may alter text positioning
- Complex layouts (multi-column, tables) may cause slight inaccuracies
- Requires Microsoft Word (not cross-platform)
- 🤖 Auto-detect author sections
- 📊 Confidence score for anonymization
- 🧠 NLP-based entity removal (names, emails, institutions)
Frontend:
- HTML, CSS, JavaScript
- PDF.js
Backend:
- FastAPI
- PyMuPDF (fitz)
- pywin32 (Word COM)
-
Output files are saved as:
<original_name>_anonymized.pdf -
Temporary files stored in
/temp -
Supports recursive folder scanning
This tool provides a semi-automated anonymization pipeline combining:
- manual precision (user selection)
- automated processing (word-level redaction + metadata removal)
Designed for research paper review workflows where bias-free evaluation is required.