academic-refchecker 2.0.16__py3-none-any.whl → 2.0.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/METADATA +156 -22
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/RECORD +8 -8
- backend/database.py +10 -0
- refchecker/__version__.py +1 -1
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/WHEEL +0 -0
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/entry_points.txt +0 -0
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/licenses/LICENSE +0 -0
- {academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: academic-refchecker
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.18
|
|
4
4
|
Summary: A comprehensive tool for validating reference accuracy in academic papers
|
|
5
5
|
Author-email: Mark Russinovich <markrussinovich@hotmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -140,6 +140,7 @@ Learn about RefChecker's design philosophy and development process in this detai
|
|
|
140
140
|
- [📊 Sample Output](#-sample-output)
|
|
141
141
|
- [🎯 Features](#-features)
|
|
142
142
|
- [🚀 Quick Start](#-quick-start)
|
|
143
|
+
- [🐳 Docker (Recommended)](#-docker-recommended)
|
|
143
144
|
- [🌐 Web UI](#-web-ui)
|
|
144
145
|
- [🤖 LLM-Enhanced Reference Extraction](#-llm-enhanced-reference-extraction)
|
|
145
146
|
- [📦 Installation](#-installation)
|
|
@@ -164,7 +165,15 @@ Learn about RefChecker's design philosophy and development process in this detai
|
|
|
164
165
|
|
|
165
166
|
## 🚀 Quick Start
|
|
166
167
|
|
|
167
|
-
###
|
|
168
|
+
### Easiest: Use Docker
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
docker run -p 8000:8000 -e ANTHROPIC_API_KEY=your_key ghcr.io/markrussinovich/refchecker:latest
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Open **http://localhost:8000** in your browser. See [Docker](#-docker-recommended) for more options.
|
|
175
|
+
|
|
176
|
+
### Command Line (requires Python installation)
|
|
168
177
|
|
|
169
178
|
1. **Check a famous paper:**
|
|
170
179
|
```bash
|
|
@@ -183,15 +192,139 @@ Learn about RefChecker's design philosophy and development process in this detai
|
|
|
183
192
|
|
|
184
193
|
> **⚡ Performance Tip**: Reference verification takes 5-10 seconds per reference without a Semantic Scholar API key due to rate limiting. With an API key, verification speeds up to 1-2 seconds per reference. Set `SEMANTIC_SCHOLAR_API_KEY` environment variable or use `--semantic-scholar-api-key` for faster processing.
|
|
185
194
|
|
|
195
|
+
## 🐳 Docker (Recommended)
|
|
196
|
+
|
|
197
|
+
The easiest way to run RefChecker is with Docker. Pre-built images are automatically published to GitHub Container Registry on every release.
|
|
198
|
+
|
|
199
|
+
### Quick Start
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# Pull and run the latest image (works on Intel/AMD and Apple Silicon)
|
|
203
|
+
docker run -p 8000:8000 ghcr.io/markrussinovich/refchecker:latest
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Open **http://localhost:8000** in your browser.
|
|
207
|
+
|
|
208
|
+
### With LLM API Keys
|
|
209
|
+
|
|
210
|
+
To use LLM-powered reference extraction (recommended for best accuracy), pass your API key:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Using Anthropic Claude (recommended)
|
|
214
|
+
docker run -p 8000:8000 \
|
|
215
|
+
-e ANTHROPIC_API_KEY=your_key_here \
|
|
216
|
+
ghcr.io/markrussinovich/refchecker:latest
|
|
217
|
+
|
|
218
|
+
# Using OpenAI
|
|
219
|
+
docker run -p 8000:8000 \
|
|
220
|
+
-e OPENAI_API_KEY=your_key_here \
|
|
221
|
+
ghcr.io/markrussinovich/refchecker:latest
|
|
222
|
+
|
|
223
|
+
# Using Google Gemini
|
|
224
|
+
docker run -p 8000:8000 \
|
|
225
|
+
-e GOOGLE_API_KEY=your_key_here \
|
|
226
|
+
ghcr.io/markrussinovich/refchecker:latest
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Persistent Data
|
|
230
|
+
|
|
231
|
+
To persist check history and settings between container restarts:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
docker run -p 8000:8000 \
|
|
235
|
+
-v refchecker-data:/app/data \
|
|
236
|
+
-e ANTHROPIC_API_KEY=your_key_here \
|
|
237
|
+
ghcr.io/markrussinovich/refchecker:latest
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Using Docker Compose
|
|
241
|
+
|
|
242
|
+
For easier configuration, clone the repo and use the included `docker-compose.yml`:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
git clone https://github.com/markrussinovich/refchecker.git
|
|
246
|
+
cd refchecker
|
|
247
|
+
|
|
248
|
+
# Copy the example environment file and add your API keys
|
|
249
|
+
cp .env.example .env
|
|
250
|
+
# Edit .env with your API keys
|
|
251
|
+
|
|
252
|
+
# Start RefChecker
|
|
253
|
+
docker compose up
|
|
254
|
+
|
|
255
|
+
# Or run in background
|
|
256
|
+
docker compose up -d
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### GPU Support for Local Models
|
|
260
|
+
|
|
261
|
+
For running local LLMs with vLLM (no API keys needed), use the GPU-enabled image:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
# Pull the GPU image (amd64/NVIDIA only)
|
|
265
|
+
docker pull ghcr.io/markrussinovich/refchecker:gpu
|
|
266
|
+
|
|
267
|
+
# Run with GPU access
|
|
268
|
+
docker run --gpus all -p 8000:8000 \
|
|
269
|
+
-v refchecker-data:/app/data \
|
|
270
|
+
-v refchecker-models:/app/models \
|
|
271
|
+
ghcr.io/markrussinovich/refchecker:gpu
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Or with Docker Compose:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# Start with GPU profile
|
|
278
|
+
docker compose --profile gpu up
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Available Image Tags
|
|
282
|
+
|
|
283
|
+
| Tag | Description | Architectures | Size |
|
|
284
|
+
|-----|-------------|---------------|------|
|
|
285
|
+
| `latest` | Latest stable release with cloud LLM support | amd64, arm64 | ~800MB |
|
|
286
|
+
| `X.Y.Z` | Specific version (e.g., `1.2.50`) | amd64, arm64 | ~800MB |
|
|
287
|
+
| `gpu` | GPU-enabled with vLLM/PyTorch for local models | amd64 only | ~12GB |
|
|
288
|
+
| `X.Y.Z-gpu` | Specific GPU version | amd64 only | ~12GB |
|
|
289
|
+
|
|
290
|
+
> **Note**: The `gpu` images are amd64 only because CUDA is not available on ARM. For Apple Silicon Macs, use the standard `latest` tag with cloud LLM APIs.
|
|
291
|
+
|
|
292
|
+
### Building Locally
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# Build standard image
|
|
296
|
+
make docker-build
|
|
297
|
+
|
|
298
|
+
# Build GPU image
|
|
299
|
+
make docker-build-gpu
|
|
300
|
+
|
|
301
|
+
# Run locally
|
|
302
|
+
make docker-run
|
|
303
|
+
|
|
304
|
+
# Test the build
|
|
305
|
+
make docker-test
|
|
306
|
+
```
|
|
307
|
+
|
|
186
308
|
## 🌐 Web UI
|
|
187
309
|
|
|
188
|
-
RefChecker
|
|
310
|
+
RefChecker includes a modern web interface with real-time progress updates, check history, and export options.
|
|
189
311
|
|
|
190
312
|

|
|
191
313
|
|
|
192
|
-
###
|
|
314
|
+
### Features
|
|
315
|
+
|
|
316
|
+
- ✨ Real-time validation with live progress updates
|
|
317
|
+
- 📄 Support for ArXiv URLs and file uploads (PDF, LaTeX, text)
|
|
318
|
+
- 📊 Live statistics with filtering by status
|
|
319
|
+
- 📋 Export references as Markdown, plain text, or BibTeX (with corrected values)
|
|
320
|
+
- 📚 Persistent check history
|
|
321
|
+
- 🌓 Automatic dark/light mode
|
|
322
|
+
|
|
323
|
+
### Option 1: Docker (See Above)
|
|
324
|
+
|
|
325
|
+
The Docker image includes the complete Web UI - just run the container and open http://localhost:8000.
|
|
193
326
|
|
|
194
|
-
|
|
327
|
+
### Option 2: Install from PyPI
|
|
195
328
|
|
|
196
329
|
```bash
|
|
197
330
|
# Install RefChecker with Web UI support
|
|
@@ -203,15 +336,13 @@ refchecker-webui
|
|
|
203
336
|
|
|
204
337
|
Then open **http://localhost:8000** in your browser.
|
|
205
338
|
|
|
206
|
-
The `refchecker-webui` command starts a complete web server with both the API backend and the pre-built frontend.
|
|
207
|
-
|
|
208
339
|
**Options:**
|
|
209
340
|
```bash
|
|
210
341
|
refchecker-webui --port 8080 # Use a different port
|
|
211
342
|
refchecker-webui --host 0.0.0.0 # Allow external connections
|
|
212
343
|
```
|
|
213
344
|
|
|
214
|
-
### Option
|
|
345
|
+
### Option 3: Run from Cloned Repository (Development)
|
|
215
346
|
|
|
216
347
|
If you're developing or modifying the Web UI:
|
|
217
348
|
|
|
@@ -248,15 +379,6 @@ cd web-ui
|
|
|
248
379
|
npm run dev
|
|
249
380
|
```
|
|
250
381
|
|
|
251
|
-
### Features
|
|
252
|
-
|
|
253
|
-
- ✨ Real-time validation with live progress updates
|
|
254
|
-
- 📄 Support for ArXiv URLs and file uploads (PDF, LaTeX, text)
|
|
255
|
-
- 📊 Live statistics with filtering by status
|
|
256
|
-
- 📋 Export references as Markdown, plain text, or BibTeX (with corrected values)
|
|
257
|
-
- 📚 Persistent check history
|
|
258
|
-
- 🌓 Automatic dark/light mode
|
|
259
|
-
|
|
260
382
|
For complete Web UI documentation, see **[web-ui/README.md](web-ui/README.md)**.
|
|
261
383
|
|
|
262
384
|
## 🤖 LLM-Enhanced Reference Extraction
|
|
@@ -350,12 +472,20 @@ You can debug vllm server issues by running refchecker with the `--debug` flag.
|
|
|
350
472
|
|
|
351
473
|
## 📦 Installation
|
|
352
474
|
|
|
353
|
-
###
|
|
475
|
+
### Option 1: Docker (Recommended)
|
|
354
476
|
|
|
355
|
-
-
|
|
356
|
-
- **Node.js 18+** and npm (only required for Web UI)
|
|
477
|
+
No installation required - just run the Docker image:
|
|
357
478
|
|
|
358
|
-
|
|
479
|
+
```bash
|
|
480
|
+
docker run -p 8000:8000 ghcr.io/markrussinovich/refchecker:latest
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
See [Docker](#-docker-recommended) section for full details on configuration, persistent data, and GPU support.
|
|
484
|
+
|
|
485
|
+
### Option 2: Install from PyPI
|
|
486
|
+
|
|
487
|
+
**Prerequisites:**
|
|
488
|
+
- **Python 3.8+** (3.10+ recommended)
|
|
359
489
|
|
|
360
490
|
For the latest stable release with all features:
|
|
361
491
|
|
|
@@ -377,7 +507,11 @@ Other optional extras:
|
|
|
377
507
|
- **optional**: Enhanced features (lxml, selenium, pikepdf, nltk, scikit-learn)
|
|
378
508
|
- **vllm**: Local model inference with vLLM
|
|
379
509
|
|
|
380
|
-
### Option
|
|
510
|
+
### Option 3: Install from Source
|
|
511
|
+
|
|
512
|
+
**Prerequisites:**
|
|
513
|
+
- **Python 3.8+** (3.10+ recommended)
|
|
514
|
+
- **Node.js 18+** and npm (only required for Web UI development)
|
|
381
515
|
|
|
382
516
|
#### 1. Clone the Repository
|
|
383
517
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
academic_refchecker-2.0.
|
|
1
|
+
academic_refchecker-2.0.18.dist-info/licenses/LICENSE,sha256=Kwrx3fePVCeEFDCZvCW4OuoTNBiSoYbpGBI6qzGhWF0,1067
|
|
2
2
|
backend/__init__.py,sha256=TFVkOx5tSp3abty15RzUbaSwQ9ZD0kfUn7PDh63xkYY,521
|
|
3
3
|
backend/__main__.py,sha256=74V7yUMsRSZaaRyXYm-rZVc3TVUcUgwsoTQTUbV5EqM,211
|
|
4
4
|
backend/cli.py,sha256=xV3l9M5OdNQQYOcrzj2d_7RmCgj7CXP_1oi0TPe6zNo,1672
|
|
5
5
|
backend/concurrency.py,sha256=2KY9I_8dDkyl_HTGx27ZxU4rFXx2vqbGOlo5RrRbPjA,3223
|
|
6
|
-
backend/database.py,sha256=
|
|
6
|
+
backend/database.py,sha256=mMDXdkoEutNI9jLNgqyUbwAQxVdgG0scoAubXhbPWK4,31067
|
|
7
7
|
backend/main.py,sha256=Vh_hbLAGYZzitwXAZFRiU68S25ySGPmNGepQo2qwzfQ,56298
|
|
8
8
|
backend/models.py,sha256=El2F-RTHgxQ7-WODmiYCpjsTFDpjwF9PBt-JDa_XipE,2591
|
|
9
9
|
backend/refchecker_wrapper.py,sha256=VSQkfsMGul2bj0S7BqvhqlyuQwWykYK6fHkRKVoVFw4,55313
|
|
@@ -19,7 +19,7 @@ backend/static/assets/index-DMZJNrR0.js,sha256=UhK5CQ8IufZmx6FTvXUCtkRxTqpGK7czS
|
|
|
19
19
|
backend/static/assets/index-hk21nqxR.js,sha256=z2agP8ZFYw4AfYi-GJ5E_8_k-lPF-frXOJtPk-I0hDs,369533
|
|
20
20
|
refchecker/__init__.py,sha256=Pg5MrtLxDBRcNYcI02N-bv3tzURVd1S3nQ8IyF7Zw7E,322
|
|
21
21
|
refchecker/__main__.py,sha256=agBbT9iKN0g2xXtRNCoh29Nr7z2n5vU-r0MCVJKi4tI,232
|
|
22
|
-
refchecker/__version__.py,sha256=
|
|
22
|
+
refchecker/__version__.py,sha256=Xv9iRZBORGbLDjCyUAxBF30FP9L_w8z2drgb3UdJVXI,66
|
|
23
23
|
refchecker/checkers/__init__.py,sha256=-dR7HX0bfPq9YMXrnODoYbfNWFLqu706xoVsUdWHYRI,611
|
|
24
24
|
refchecker/checkers/arxiv_citation.py,sha256=j_waQmQSP3iuZdVuBE92ghtiOdGFTCx09s6f4mHik6o,27777
|
|
25
25
|
refchecker/checkers/crossref.py,sha256=88moAyTudBqf9SKqTQkNAq1yyuRe95f8r4EpmJznupQ,20937
|
|
@@ -62,8 +62,8 @@ refchecker/utils/mock_objects.py,sha256=QxU-UXyHSY27IZYN8Sb8ei0JtNkpGSdMXoErrRLH
|
|
|
62
62
|
refchecker/utils/text_utils.py,sha256=Tx1k0SqS1cmw4N9BDJY-Ipep2T-HMmKPqi4SMcq1ZJ8,235751
|
|
63
63
|
refchecker/utils/unicode_utils.py,sha256=-WBKarXO756p7fd7gCeNsMag4ztDNURwFX5IVniOtwY,10366
|
|
64
64
|
refchecker/utils/url_utils.py,sha256=7b0rWCQJSajzqOvD7ghsBZPejiq6mUIz6SGhvU_WGDs,9441
|
|
65
|
-
academic_refchecker-2.0.
|
|
66
|
-
academic_refchecker-2.0.
|
|
67
|
-
academic_refchecker-2.0.
|
|
68
|
-
academic_refchecker-2.0.
|
|
69
|
-
academic_refchecker-2.0.
|
|
65
|
+
academic_refchecker-2.0.18.dist-info/METADATA,sha256=QdH4y4-bDSXrM2Ah6UiYB97losRkX8PKG5d454M0icQ,29987
|
|
66
|
+
academic_refchecker-2.0.18.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
67
|
+
academic_refchecker-2.0.18.dist-info/entry_points.txt,sha256=9cREsaKwlp05Ql0CBIjKrNHk5IG2cHY5LvJPsV2-SxA,108
|
|
68
|
+
academic_refchecker-2.0.18.dist-info/top_level.txt,sha256=FfNvrvpj25gfpUBjW0epvz7Qrdejhups5Za_DBiSRu4,19
|
|
69
|
+
academic_refchecker-2.0.18.dist-info/RECORD,,
|
backend/database.py
CHANGED
|
@@ -14,10 +14,20 @@ from cryptography.fernet import Fernet
|
|
|
14
14
|
def get_data_dir() -> Path:
|
|
15
15
|
"""Get platform-appropriate user data directory for refchecker.
|
|
16
16
|
|
|
17
|
+
If REFCHECKER_DATA_DIR environment variable is set, use that path.
|
|
18
|
+
Otherwise, use platform-specific defaults:
|
|
19
|
+
|
|
17
20
|
Windows: %LOCALAPPDATA%\refchecker
|
|
18
21
|
macOS: ~/Library/Application Support/refchecker
|
|
19
22
|
Linux: ~/.local/share/refchecker
|
|
20
23
|
"""
|
|
24
|
+
# Check for environment variable override (useful for Docker)
|
|
25
|
+
env_data_dir = os.environ.get("REFCHECKER_DATA_DIR")
|
|
26
|
+
if env_data_dir:
|
|
27
|
+
data_dir = Path(env_data_dir)
|
|
28
|
+
data_dir.mkdir(parents=True, exist_ok=True)
|
|
29
|
+
return data_dir
|
|
30
|
+
|
|
21
31
|
if sys.platform == "win32":
|
|
22
32
|
# Windows: use LOCALAPPDATA
|
|
23
33
|
base = Path(os.environ.get("LOCALAPPDATA", Path.home() / "AppData" / "Local"))
|
refchecker/__version__.py
CHANGED
|
File without changes
|
{academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{academic_refchecker-2.0.16.dist-info → academic_refchecker-2.0.18.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|