LitOrganizer is a powerful tool designed for researchers, academics, and students to organize their PDF literature collections automatically. It extracts metadata from academic papers, renames files according to citation standards, categorizes them into a logical directory structure, and provides powerful search capabilities.
- Smart Metadata Extraction: Automatically extracts DOIs and retrieves complete metadata from multiple academic APIs
- Citation-based Renaming: Renames PDF files using APA7 format (Author_Year) for easy identification
- Intelligent Categorization: Organizes PDFs into folders by journal, author, year, or subject
- Reference List Generation: Creates a comprehensive bibliography of all processed papers
- Full-text Search: Quickly find information across your entire PDF collection
- Context Display: View search results with surrounding text for better understanding
- Flexible Search Options: Use exact match, case sensitivity, or regular expressions
- Export Results: Save search results to Word and Excel files with highlighted matches
- Performance Metrics: Visual representation of processing speed and efficiency
- Accuracy Analysis: Detailed breakdown of metadata quality and DOI detection rates
- Publication Analytics: Distribution of papers by author, journal, year, and subject
- Error Diagnostics: Identification of problematic files with detailed error analysis
- Modern Design: Clean, intuitive interface with Windows 11 design principles
- Multi-tab Layout: Separate tabs for organization, search, and statistics
- Progress Tracking: Real-time progress indicators and detailed logging
- Customizable Options: Flexible settings to adapt to your workflow
The easiest way to run LitOrganizer is using the provided launcher scripts. They will automatically:
- β Check for Python 3.11 installation
- β
Create a virtual environment (
.venv) - β Install all required dependencies
- β Launch the application
- Download or clone the repository
- Double-click
start_litorganizer.bat - Follow the on-screen instructions
If Python 3.11 is not installed, the script will show you how to install it.
macOS has security restrictions that prevent running downloaded scripts. Follow these steps:
Step 1: Download the Repository
git clone https://github.com/bcankara/LitOrganizer.git
cd LitOrganizerStep 2: Make Scripts Executable
chmod +x start_litorganizer.sh
chmod +x "Start LitOrganizer.command"Step 3: Remove Quarantine (if downloaded as ZIP)
xattr -cr .Step 4: Run the Application
You have two options:
Option A: Double-click in Finder
- Open Finder and navigate to the LitOrganizer folder
- Double-click
Start LitOrganizer.command - If you see "cannot be opened because it is from an unidentified developer":
- Right-click the file β Select "Open" β Click "Open" in the dialog
- Or go to System Preferences β Security & Privacy β Click "Open Anyway"
Option B: Run from Terminal
./start_litorganizer.shIf Python 3.11 is not installed, the script will offer to install it. You can also install manually:
Using Homebrew (Recommended):
# Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Python 3.11
brew install python@3.11Using pyenv:
brew install pyenv
pyenv install 3.11.10
pyenv global 3.11.10Official Installer: Download from python.org
| Issue | Solution |
|---|---|
| "Permission denied" | Run chmod +x start_litorganizer.sh |
| "Operation not permitted" | Run xattr -cr . in the project folder |
| "Unidentified developer" | Right-click β Open β Open |
| App doesn't open | Check System Preferences β Security & Privacy |
| Python not found | Install via Homebrew: brew install python@3.11 |
Step 1: Clone and Navigate
git clone https://github.com/bcankara/LitOrganizer.git
cd LitOrganizerStep 2: Make Executable and Run
chmod +x start_litorganizer.sh
./start_litorganizer.shUbuntu/Debian:
# For Ubuntu 22.04+
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-pip
# For older Ubuntu versions
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-pipFedora:
sudo dnf install python3.11Arch Linux:
sudo pacman -S python# Pull the image
docker pull bcankara/litorganizer:latest
# Windows
docker run -it --rm -e DISPLAY=host.docker.internal:0 -v %cd%/pdfs:/app/pdf bcankara/litorganizer
# Linux
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $(pwd)/pdfs:/app/pdf bcankara/litorganizer
# macOS (with XQuartz)
docker run -it --rm -e DISPLAY=host.docker.internal:0 -v $(pwd)/pdfs:/app/pdf bcankara/litorganizerRequirements:
# Clone repository
git clone https://github.com/bcankara/LitOrganizer.git
cd LitOrganizer
# Create virtual environment
python3.11 -m venv .venv
# Activate (Windows)
.venv\Scripts\activate
# Activate (macOS/Linux)
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run
python litorganizer.pyRun without arguments to start the graphical interface:
python litorganizer.py- Select a directory containing PDFs using the "Browse" button
- Configure categorization options (by journal, author, year, subject)
- Click "Start Processing" to begin organizing your files
- Monitor progress in the log window
- Select a directory containing PDFs
- Enter a keyword to search for
- Configure search options:
- Exact Match: Only match complete words
- Case Sensitive: Match exact letter case
- Use Regex: Use regular expressions for pattern matching
- Click "Start Search" to begin
- View results and save to Word/Excel if desired
python litorganizer.py -d /path/to/pdfs --create-referencesRun python litorganizer.py --help for all options.
API settings for DOI metadata retrieval can be configured in the API Settings tab or by editing config/api_config.json.
Dependencies:
- PyQt5: Graphical user interface
- PyMuPDF & pdfplumber: PDF text extraction
- pandas & openpyxl: Excel file generation
- python-docx: Word document creation
- requests: API communication
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Issues: GitHub Issues
- Discussions: GitHub Discussions




