phd-deepread-workflow 0.1.0__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.
@@ -0,0 +1,475 @@
1
+ Metadata-Version: 2.4
2
+ Name: phd-deepread-workflow
3
+ Version: 0.1.0
4
+ Summary: Transform academic PDFs into structured literature notes and critical-thinking canvases for Obsidian
5
+ Author-email: Helen Insights <heleninsights@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Helen-insights/phd-deepread-workflow
8
+ Project-URL: Repository, https://github.com/Helen-insights/phd-deepread-workflow.git
9
+ Project-URL: Issues, https://github.com/Helen-insights/phd-deepread-workflow/issues
10
+ Keywords: pdf,academic,obsidian,literature-review,research,workflow
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Topic :: Education
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: PyMuPDF>=1.24.0
23
+ Requires-Dist: pytesseract>=0.3.10
24
+ Requires-Dist: Pillow>=10.0.0
25
+ Provides-Extra: dev
26
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
27
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
28
+ Requires-Dist: black>=23.0.0; extra == "dev"
29
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
30
+ Requires-Dist: isort>=5.12.0; extra == "dev"
31
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
32
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
33
+ Requires-Dist: mkdocs>=1.5.0; extra == "dev"
34
+ Requires-Dist: mkdocs-material>=9.0.0; extra == "dev"
35
+ Dynamic: license-file
36
+
37
+ ---
38
+ feature: thumbnails/external/74a4c4ea2d920c8d9a05a7420946145d.svg
39
+ thumbnail: thumbnails/external/74a4c4ea2d920c8d9a05a7420946145d.svg
40
+ ---
41
+ # PhD Deep Read Workflow
42
+
43
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
44
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
45
+ [![Claude Code Skill](https://img.shields.io/badge/Claude%20Code-Skill-6E56CF)](https://claude.com/claude-code)
46
+
47
+ > Transform academic PDFs into structured literature notes and critical-thinking canvases for Obsidian using AI-assisted analysis.
48
+
49
+ ## 🎯 What is PhD Deep Read?
50
+
51
+ PhD Deep Read is a sophisticated workflow that helps researchers and PhD students process academic literature efficiently. It transforms raw PDFs into:
52
+
53
+ 1. **Structured literature notes** following a comprehensive academic template
54
+ 2. **Critical-thinking canvases** with 9 interconnected nodes for deep analysis
55
+ 3. **Extracted text and images** using a smart Text-First decision tree
56
+ 4. **Claude Code-assisted analysis** for high-quality note generation
57
+
58
+ Perfect for literature reviews, dissertation research, and systematic knowledge building in Obsidian.
59
+
60
+ ## ✨ Key Features
61
+
62
+ ### 🚀 Smart PDF Extraction
63
+ - **Text-First Decision Tree**: Pre-scans PDFs, uses fast PyMuPDF extraction for searchable text (80%+ of academic PDFs)
64
+ - **Intelligent OCR Fallback**: Only uses Tesseract OCR for scanned/complex pages
65
+ - **Image Extraction**: Preserves figures, tables, and diagrams as embedded images
66
+ - **Metadata Tracking**: Records extraction method per page for transparency
67
+
68
+ ### 📝 AI-Assisted Note Generation
69
+ - **Comprehensive Template**: 175+ line `.clauderules` template with YAML frontmatter, Dataview callouts, and academic sections
70
+ - **Claude Code Integration**: Uses Claude's reasoning for critical analysis and synthesis
71
+ - **Wikilink Rich**: Extensive linking of concepts, methods, proteins, and diseases
72
+ - **Obsidian Ready**: Fully compatible with Dataview plugin and Obsidian Canvas
73
+
74
+ ### 🧠 Critical-Thinking Canvases
75
+ - **9 Interconnected Nodes**: Core argument, assumptions, evidence assessment, alternative explanations, methodological critique, personal relevance, future directions, critical questions, hypothesis center
76
+ - **Visual Analysis**: Spatial arrangement facilitates deep critical thinking
77
+ - **JSON Format**: Compatible with Obsidian Canvas plugin
78
+
79
+ ### ⚙️ Automated Workflow
80
+ - **Batch Processing**: Process entire directories of PDFs overnight
81
+ - **Quality Verification**: Automated checks for format consistency and quality
82
+ - **Modular Commands**: Separate commands for each workflow stage
83
+ - **Configurable**: Adjust thresholds, templates, and output formats
84
+
85
+ ## 🏗️ Architecture
86
+
87
+ ```mermaid
88
+ graph TD
89
+ A[PDF Input] --> B{Text-First Decision Tree}
90
+ B --> C[Searchable?]
91
+ C -->|Yes| D[PyMuPDF<br/>Fast Text Extraction]
92
+ C -->|No| E[Tesseract OCR<br/>Scanned Pages]
93
+
94
+ D --> F[Markdown + Images + Metadata]
95
+ E --> F
96
+
97
+ F --> G[Claude Code Analysis]
98
+ G --> H[Structured Literature Note]
99
+ F --> I[Canvas Template]
100
+ I --> J[Critical-Thinking Canvas]
101
+
102
+ H --> K[Obsidian Integration]
103
+ J --> K
104
+
105
+ K --> L[Verified Output]
106
+ ```
107
+
108
+ ## 📦 Installation
109
+
110
+ ### Prerequisites
111
+
112
+ - **Python 3.10+** and `pip`
113
+ - **Tesseract OCR** (optional, for scanned PDFs)
114
+ - **Claude Code** (for note generation)
115
+
116
+ ### Quick Install
117
+
118
+ ```bash
119
+ # Clone the repository
120
+ git clone https://github.com/Helen-insights/phd-deepread-workflow.git
121
+ cd phd-deepread-workflow
122
+
123
+ # Install Python dependencies
124
+ pip install -r requirements.txt
125
+
126
+ # Install Tesseract OCR (optional but recommended)
127
+ # macOS:
128
+ brew install tesseract
129
+ # Ubuntu/Debian:
130
+ sudo apt install tesseract-ocr
131
+
132
+ # Install Python OCR wrapper
133
+ pip install pytesseract pillow
134
+
135
+ # Verify installation
136
+ python scripts/verify.py --extract test_paper.pdf
137
+ ```
138
+
139
+ ### As a Claude Code Skill
140
+
141
+ ```bash
142
+ # Copy the skill to your Claude Code skills directory
143
+ cp -r phd-deepread-workflow ~/.claude/skills/phd-deepread
144
+
145
+ # Use the skill in Claude Code
146
+ phd-deepread setup
147
+ phd-deepread extract paper.pdf
148
+ ```
149
+
150
+ ### Docker Installation
151
+
152
+ For consistent environments or containerized deployment:
153
+
154
+ ```bash
155
+ # Build the Docker image
156
+ docker build -t phd-deepread .
157
+
158
+ # Run a single extraction
159
+ docker run -v $(pwd)/input:/input -v $(pwd)/output:/output \
160
+ phd-deepread extract /input/paper.pdf --output /output/
161
+
162
+ # Or use Docker Compose
163
+ docker-compose up --build
164
+ ```
165
+
166
+ See [Dockerfile](Dockerfile) and [docker-compose.yml](docker-compose.yml) for advanced configurations.
167
+
168
+ ## 🚀 Quick Start
169
+
170
+ ### Process a Single Paper
171
+
172
+ ```bash
173
+ # 1. Extract text and images
174
+ phd-deepread extract paper.pdf --output markdown_output/
175
+
176
+ # 2. Generate structured literature note (requires Claude Code)
177
+ phd-deepread generate markdown_output/paper/ --template templates/.clauderules
178
+
179
+ # 3. Create critical-thinking canvas
180
+ phd-deepread canvas markdown_output/paper/ --output structured_notes/
181
+ ```
182
+
183
+ ### Batch Process a Directory
184
+
185
+ ```bash
186
+ # Process all PDFs in a directory
187
+ phd-deepread batch papers/ --output literature-notes/
188
+
189
+ # Limit to first N pages (for testing)
190
+ phd-deepread batch papers/ --output literature-notes/ --max-pages 3
191
+ ```
192
+
193
+ ### Interactive Guide
194
+
195
+ ```bash
196
+ # Show workflow guide with decision-tree visualization
197
+ phd-deepread guide
198
+ ```
199
+
200
+ ## 📖 Detailed Usage
201
+
202
+ ### Stage 1: Text-First PDF Extraction
203
+
204
+ The extraction uses a smart decision tree:
205
+
206
+ ```bash
207
+ phd-deepread extract paper.pdf \
208
+ --output markdown_output/ \
209
+ --threshold 100 \ # Min chars for "searchable"
210
+ --percentage 0.8 \ # Use PyMuPDF if 80%+ pages searchable
211
+ --lang eng \ # OCR language
212
+ --disable-image-extraction # Skip images if needed
213
+ ```
214
+
215
+ **Output Structure:**
216
+ ```
217
+ markdown_output/paper/
218
+ ├── paper.md # Raw markdown with embedded images
219
+ ├── paper_meta.json # Metadata, extraction methods per page
220
+ ├── blocks.json # Block-level segmentation data
221
+ └── _page_*_*.png # Extracted images
222
+ ```
223
+
224
+ ### Stage 2: Structured Note Generation
225
+
226
+ Uses Claude Code with the `.clauderules` template:
227
+
228
+ ```bash
229
+ phd-deepread generate markdown_output/paper/ \
230
+ --template templates/.clauderules \
231
+ --output structured_notes/ \
232
+ --skeleton # Generate placeholder note without Claude
233
+ ```
234
+
235
+ **Template Features:**
236
+ - YAML frontmatter (`category`, `tags`, `citekey`, `status`, `dateread`)
237
+ - Dataview callouts (`[!Citation]`, `[!Synthesis]`, `[!Metadata]`, `[!Abstract]`)
238
+ - 7 academic sections with critical analysis
239
+ - Wikilinks for concepts, methods, tools
240
+
241
+ ### Stage 3: Critical-Thinking Canvas
242
+
243
+ Creates 9-node JSON Canvas for deep analysis:
244
+
245
+ ```bash
246
+ phd-deepread canvas markdown_output/paper/ \
247
+ --output structured_notes/ \
248
+ --template templates/critical-thinking.canvas
249
+ ```
250
+
251
+ **Canvas Nodes:**
252
+ 1. **core-argument** - Primary claim and logical chain
253
+ 2. **assumptions** - Explicit, implicit, questionable assumptions
254
+ 3. **evidence-assessment** - Strength of evidence
255
+ 4. **alternative-explanations** - Competing hypotheses
256
+ 5. **methodological-critique** - Study limitations
257
+ 6. **personal-relevance** - Connections to your research
258
+ 7. **future-directions** - Research goals
259
+ 8. **critical-questions-enhanced** - Hypothesis testing questions
260
+ 9. **hypothesis-center** - Hypothesis re-evaluation
261
+
262
+ ### Stage 4: Verification
263
+
264
+ Quality checks and pattern matching:
265
+
266
+ ```bash
267
+ phd-deepread verify --all literature-notes/
268
+ ```
269
+
270
+ ## 🔧 Configuration
271
+
272
+ ### Custom Templates
273
+
274
+ Modify `templates/.clauderules` for different academic fields:
275
+
276
+ ```yaml
277
+ category: literaturenote
278
+ tags:
279
+ - #{{Field}} # e.g., #Neuroscience, #Bioinformatics
280
+ - #{{Topic1}}
281
+ - #{{Topic2}}
282
+ citekey: {{camelCase: FirstAuthor+FirstWordOfTitle+Year}}
283
+ # ... rest of template
284
+ ```
285
+
286
+ ### Extraction Parameters
287
+
288
+ Adjust in `scripts/extract.py` or via command line:
289
+
290
+ | Parameter | Default | Description |
291
+ |-----------|---------|-------------|
292
+ | `--threshold` | 100 | Min characters to consider page searchable |
293
+ | `--percentage` | 0.8 | Use PyMuPDF if this % of pages are searchable |
294
+ | `--lang` | eng | Tesseract OCR language code |
295
+ | `--force-ocr` | false | Force OCR for all pages |
296
+ | `--force-text` | false | Force PyMuPDF for all pages |
297
+ | `--no-ocr` | false | Disable OCR entirely |
298
+
299
+ ### Output Directories
300
+
301
+ Configure in `config/config.yaml`:
302
+ ```yaml
303
+ # Directory paths
304
+ directories:
305
+ markdown_output: "./markdown_output"
306
+ structured_notes: "./structured_literature_notes"
307
+ canvas_templates: "./canvas_templates"
308
+ generation_prompts: "./generation_prompts"
309
+
310
+ # Extraction thresholds
311
+ extraction:
312
+ searchable_threshold: 100
313
+ searchable_percentage: 0.8
314
+ ocr_language: "eng"
315
+ ```
316
+
317
+ See [config/config.yaml](config/config.yaml) for all available options.
318
+
319
+ ## 📊 Performance
320
+
321
+ | Scenario | Time per Paper | Accuracy | Best For |
322
+ |----------|----------------|----------|----------|
323
+ | **All searchable text** | 10-30 minutes | ~100% | Modern digital PDFs |
324
+ | **Mixed (80% text, 20% OCR)** | 30-60 minutes | ~98% | Typical academic PDFs |
325
+ | **All OCR required** | 60-120 minutes | ~95% | Scanned documents |
326
+
327
+ **Typical workflow:** 27-80 minutes per paper total (extraction + note generation + canvas creation)
328
+
329
+ ## 🛠️ Troubleshooting
330
+
331
+ ### Common Issues
332
+
333
+ **Tesseract OCR not installed:**
334
+ ```bash
335
+ # macOS
336
+ brew install tesseract
337
+
338
+ # Ubuntu/Debian
339
+ sudo apt install tesseract-ocr
340
+
341
+ # Python wrapper
342
+ pip install pytesseract pillow
343
+ ```
344
+
345
+ **PyMuPDF missing:**
346
+ ```bash
347
+ pip install PyMuPDF
348
+ ```
349
+
350
+ **Missing images in extraction:**
351
+ - Check PDF contains extractable images
352
+ - Ensure `--disable-image-extraction` not set
353
+ - Verify PyMuPDF version supports image extraction
354
+
355
+ **Virtual environment issues:**
356
+ ```bash
357
+ # Create and activate virtual environment
358
+ python -m venv .venv
359
+ source .venv/bin/activate # Linux/macOS
360
+ # or .venv\Scripts\activate # Windows
361
+ pip install -r requirements.txt
362
+ ```
363
+
364
+ **Claude Code integration:**
365
+ - Ensure Claude Code is installed and authenticated
366
+ - Check skill is properly installed in `~/.claude/skills/`
367
+ - Verify skill has necessary permissions
368
+
369
+ ### Debug Mode
370
+
371
+ Run with verbose output:
372
+ ```bash
373
+ phd-deepread extract paper.pdf --verbose --debug
374
+ ```
375
+
376
+ Check logs in `logs/` directory (if configured).
377
+
378
+ ## 🔄 Integration with Other Tools
379
+
380
+ ### Zotero
381
+ - Use Zotero citation keys as `citekey` in frontmatter
382
+ - Export PDFs from Zotero to processing directory
383
+ - Import generated notes back into Zotero as linked files
384
+
385
+ ### Obsidian
386
+ - Notes ready for Dataview queries
387
+ - Canvases work with Obsidian Canvas plugin
388
+ - Wikilinks connect to existing or future notes
389
+ - Use with Obsidian Git for version control
390
+
391
+ ### Reference Managers
392
+ - BibTeX export for generated citations
393
+ - RIS format integration (planned)
394
+ - DOI lookup and metadata fetching (planned)
395
+
396
+ ## 📚 Examples
397
+
398
+ See the `examples/` directory for:
399
+ - `example-output.md` - Complete structured literature note
400
+ - `example-canvas.canvas` - 9-node critical-thinking canvas
401
+ - `test_paper.pdf` - Sample PDF for testing
402
+
403
+ Example output from the batch test is in `batch_test_output/`.
404
+
405
+ ## 🧪 Testing
406
+
407
+ Run the test suite:
408
+ ```bash
409
+ # Run all tests
410
+ python -m pytest tests/ -v
411
+
412
+ # Test specific component
413
+ python scripts/verify.py --extract test_paper.pdf
414
+ python scripts/verify.py --note examples/example-output.md
415
+ python scripts/verify.py --canvas examples/example-canvas.canvas
416
+ ```
417
+
418
+ **Note**: For the extraction test, use your own PDF file named `test_paper.pdf` in the examples directory, or replace the command with a path to your test PDF.
419
+
420
+ **Continuous Integration**: Tests run automatically on GitHub Actions for each commit and pull request. See [.github/workflows/test.yml](.github/workflows/test.yml).
421
+
422
+ ## 🤝 Contributing
423
+
424
+ We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.
425
+
426
+ 1. **Fork the repository**
427
+ 2. **Create a feature branch** (`git checkout -b feature/amazing-feature`)
428
+ 3. **Commit changes** (`git commit -m 'Add amazing feature'`)
429
+ 4. **Push to branch** (`git push origin feature/amazing-feature`)
430
+ 5. **Open a Pull Request**
431
+
432
+ ### Development Setup
433
+
434
+ ```bash
435
+ # Clone and install development dependencies
436
+ git clone https://github.com/Helen-insights/phd-deepread-workflow.git
437
+ cd phd-deepread-workflow
438
+ pip install -r requirements-dev.txt
439
+ pre-commit install # Install git hooks
440
+ ```
441
+
442
+ ## 📄 License
443
+
444
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
445
+
446
+ ## 🙏 Acknowledgments
447
+
448
+ - **Claude Code** for AI-assisted note generation
449
+ - **PyMuPDF** for fast PDF text extraction
450
+ - **Tesseract OCR** for optical character recognition
451
+ - **Obsidian** for the excellent note-taking platform
452
+ - **All contributors** who help improve this workflow
453
+
454
+ ## 📞 Support
455
+
456
+ - **Issues**: [GitHub Issues](https://github.com/Helen-insights/phd-deepread-workflow/issues)
457
+ - **Discussions**: [GitHub Discussions](https://github.com/Helen-insights/phd-deepread-workflow/discussions)
458
+ - **Email**: [heleninsights@gmail.com](mailto:heleninsights@gmail.com)
459
+
460
+ ## 📈 Roadmap
461
+
462
+ - [ ] Web UI for configuration and monitoring
463
+ - [ ] Integration with more reference managers (Mendeley, EndNote)
464
+ - [ ] Advanced layout detection for complex PDFs
465
+ - [ ] Multi-language support for OCR and analysis
466
+ - [ ] Plugin system for custom templates and processors
467
+ - [ ] Cloud processing for large PDF collections
468
+ - [ ] Mobile app for on-the-go paper processing
469
+
470
+ ---
471
+
472
+ <div align="center">
473
+ <p>Made with ❤️ for the academic community</p>
474
+ <p>If this workflow helps your research, consider giving it a ⭐ on GitHub!</p>
475
+ </div>
@@ -0,0 +1,12 @@
1
+ phd_deepread_workflow-0.1.0.dist-info/licenses/LICENSE,sha256=hndS1NFHnv6nj9-HRk7IGHKGLYfspx5Zxes_LDZPkFs,1070
2
+ scripts/__init__.py,sha256=pTgVeF4y55JshO8C0FUdquo0EggjWbJnd7CH0KznmBQ,852
3
+ scripts/canvas.py,sha256=WNYCOcJ_LthB_uacTnKEj0dc3pcLc32QnR111Jg1S1Y,14085
4
+ scripts/extract.py,sha256=kakkQNh90WB2IMvWbwj6CFRuptjUiTTknYy0H9NIk8c,19181
5
+ scripts/generate.py,sha256=Lh69NZ3JvH90h4KB5KRpW0TOTLdoPHNETVOVGE0-MP0,9884
6
+ scripts/phd_deepread.py,sha256=REDNZXIJLiNWol61vqiLBQh4vXAHNNlvDPlIwbHDfIE,3413
7
+ scripts/verify.py,sha256=VY-Ly6v6b7AYrmHEinx--cZbEEEAA4VxLOdrUEL0ZnU,9157
8
+ phd_deepread_workflow-0.1.0.dist-info/METADATA,sha256=iXCIkjO9gLzLMViKF_2bGCNBJF6ZwWWqCyNt5BpaA-s,15082
9
+ phd_deepread_workflow-0.1.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
10
+ phd_deepread_workflow-0.1.0.dist-info/entry_points.txt,sha256=SyQsd0ZbzhMWCFzXUBOvU5EDd6LjB7TJSEDjJVplkak,59
11
+ phd_deepread_workflow-0.1.0.dist-info/top_level.txt,sha256=rmzd5mewlrJy4sT608KPib7sM7edoY75AeqJeY3SPB4,8
12
+ phd_deepread_workflow-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ phd-deepread = scripts.phd_deepread:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Helen Insights
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ scripts
scripts/__init__.py ADDED
@@ -0,0 +1,32 @@
1
+ """
2
+ PhD Deep Read Workflow - Python scripts package
3
+
4
+ This package contains the core scripts for the PhD Deep Read Workflow:
5
+ - extract.py: PDF extraction with Text-First decision tree
6
+ - generate.py: Structured note generation
7
+ - canvas.py: Critical-thinking canvas creation
8
+ - verify.py: Quality verification
9
+ - phd_deepread.py: CLI entry point
10
+ """
11
+
12
+ __version__ = "0.1.0"
13
+ __author__ = "Helen Insights"
14
+ __email__ = "heleninsights@gmail.com"
15
+
16
+ # Export main functions for easier imports
17
+ from .phd_deepread import main as cli_main
18
+ from .extract import main as extract_main
19
+ from .generate import main as generate_main
20
+ from .canvas import main as canvas_main
21
+ from .verify import main as verify_main
22
+
23
+ __all__ = [
24
+ "cli_main",
25
+ "extract_main",
26
+ "generate_main",
27
+ "canvas_main",
28
+ "verify_main",
29
+ "__version__",
30
+ "__author__",
31
+ "__email__",
32
+ ]