From be8b495c07410eed7f65ad1ebec14eb71fb95b96 Mon Sep 17 00:00:00 2001 From: SeanClay10 Date: Mon, 18 May 2026 10:28:00 -0700 Subject: [PATCH 1/5] docs: fix setup instructions and add classifier artifacts for handoff --- .gitignore | 1 - README.md | 4 ++-- documentation/CONTRIBUTING.md | 9 +++++++++ src/classifier/models/label_encoder.pkl | Bin 0 -> 407 bytes src/classifier/models/tfidf_vectorizer.pkl | Bin 0 -> 383629 bytes 5 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 src/classifier/models/label_encoder.pkl create mode 100644 src/classifier/models/tfidf_vectorizer.pkl diff --git a/.gitignore b/.gitignore index c7bf3fb..9ef6743 100644 --- a/.gitignore +++ b/.gitignore @@ -212,6 +212,5 @@ data/not-useful data/processed-text data/useful data/results/ -src/classifier/models/*.pkl diff --git a/README.md b/README.md index 21060b3..ff13809 100644 --- a/README.md +++ b/README.md @@ -128,12 +128,12 @@ source venv/bin/activate pip install -e ".[dev]" ``` -```bash +```powershell # Windows PowerShell git clone https://github.com/NovakLabOSU/FracFeedExtractor.git cd FracFeedExtractor py -m venv venv -./venv/Scripts/activate +.\venv\Scripts\Activate.ps1 pip install -e ".[dev]" ``` diff --git a/documentation/CONTRIBUTING.md b/documentation/CONTRIBUTING.md index f75a6ea..1abd6ca 100644 --- a/documentation/CONTRIBUTING.md +++ b/documentation/CONTRIBUTING.md @@ -26,6 +26,15 @@ All contributors must follow the Oregon State University Student Code of Conduct ollama pull qwen2.5:7b # default extraction model (~5 GB) ``` * Verify Ollama is running: `ollama list` + * **Tesseract OCR** — required for scanned PDFs + * Windows: download and run the installer from [UB Mannheim](https://github.com/UB-Mannheim/tesseract/wiki), or `choco install tesseract` + * macOS: `brew install tesseract` + * Ubuntu/Debian: `sudo apt install tesseract-ocr` + * After install, ensure `tesseract` is on your PATH: `tesseract --version` + * **Ghostscript** — required by `camelot-py` for PDF table extraction + * Windows: download from [ghostscript.com](https://www.ghostscript.com/releases/gsdnld.html), or `choco install ghostscript` + * macOS: `brew install ghostscript` + * Ubuntu/Debian: `sudo apt install ghostscript` * ### Setup Instructions ``` git clone https://github.com/NovakLabOSU/FracFeedExtractor.git diff --git a/src/classifier/models/label_encoder.pkl b/src/classifier/models/label_encoder.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a2374552469e7f6ca0c62feb6aecb2c500ce1c2e GIT binary patch literal 407 zcmZut!Ab)$5Or-!i&Ut1RK(+YS=yTiFCv~Idl1B9NVc(E%_bq)RrVn0L98%0r{Aly z+x1ZJ!DHS`X7ZAG>#z5tofdE$p0pC)B+e`6ZKguV%_8AiNTm_RH%+`YnVl<--+1

@km)?u|-V5iphC?OWd4xebg)lU8(e#o7 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 Date: Mon, 18 May 2026 10:50:41 -0700 Subject: [PATCH 2/5] docs: add design decisions document for project handoff --- documentation/DESIGN_DECISIONS.md | 177 ++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 documentation/DESIGN_DECISIONS.md diff --git a/documentation/DESIGN_DECISIONS.md b/documentation/DESIGN_DECISIONS.md new file mode 100644 index 0000000..9cff663 --- /dev/null +++ b/documentation/DESIGN_DECISIONS.md @@ -0,0 +1,177 @@ +# Design Decisions & Development History + +A record of the major technical choices made during the 2025–2026 OSU Senior Capstone project, written for the next team inheriting this codebase. + +--- + +## Timeline Overview + +| Period | Milestone | +|---|---| +| Oct 2025 | Repository setup, PDF text extraction, CI scaffolding | +| Nov 2025 | Initial classifier (Logistic Regression → XGBoost), Google Drive API | +| Jan 2026 | Initial LLM integration, table extraction | +| Feb 2026 | LLM module refactor, BioMistral experiment, OCR improvements, full pipeline | +| Mar 2026 | xgboost rework, section filtering, switched to qwen2.5:7b, parallel workers | +| Apr 2026 | LLM retry logic, Pydantic fixes, classifier loading bug fix, test coverage | +| May 2026 | Repository restructure, handoff cleanup | + +--- + +## 1. Classifier: Logistic Regression → XGBoost + +**What we started with:** The first classifier (PR #14, Nov 2025) was a straightforward TF-IDF + Logistic Regression model. It was fast to prototype and gave us a working skeleton for the CI pipeline early on. + +**Why we switched:** Logistic Regression's linear decision boundary wasn't capturing the vocabulary patterns that distinguish useful predator diet papers from unrelated ecology papers. After training on the [FracFeed global database](https://github.com/marknovak/FracFeed_DB), XGBoost consistently outperformed it by a meaningful margin. + +**What we added around the switch:** When moving to XGBoost (PR #20), we added L2 regularization and explicit class balancing, since the labeled dataset wasn't perfectly balanced between useful and not-useful papers. Both of these had a measurable effect on recall for the useful class specifically. We also enabled GPU training when available, though the CPU path works fine. + +**The current model:** TF-IDF vectorizer (10,000 features) feeding an XGBoost booster, trained with early stopping at 20 rounds. Artifacts saved to `src/classifier/models/`. The `pdf_classifier.json` file is the XGBoost model; `tfidf_vectorizer.pkl` and `label_encoder.pkl` are the sklearn preprocessing objects. + +--- + +## 2. LLM Choice: Generic Ollama → BioMistral → qwen2.5:7b + +**Initial implementation (Jan 2026):** The first LLM integration (PR #26) was a minimal `local_llm.py` that called whatever Ollama model was available. No structured output, no field descriptions; just a prompt asking for JSON. + +**BioMistral experiment (Feb 2026):** We added BioMistral (a biomedical fine-tune of Mistral 7B) in a separate `biomistral_llm.py` with the expectation that domain-specific pretraining would help with biological terminology and study design language. In practice, BioMistral was more likely to hallucinate plausible-sounding stomach count numbers than a general-purpose model. Its training distribution skewed toward clinical/genomics literature, not field ecology surveys, so the domain-specific advantage never materialized. + +**Switch to qwen2.5:7b (Mar 2026):** qwen2.5:7b consistently followed the structured output format more reliably and returned fewer null fields. We decided to switch to qwen2.5:7b after a head-to-head comparison on the same set of test papers. This model was then standardized across all entry points. + +**What to watch if you try a different model:** The pipeline uses Ollama's structured output feature (JSON schema enforcement), which not all models handle equally well. The retry logic in `llm_client.py` helps absorb transient failures but won't fix a model that systematically ignores the schema. Test any new model against the papers in the `data/` test set before committing to it. + +--- + +## 3. Text Preprocessing: Getting the Right Text to the LLM + +This was the area that evolved the most throughout the project. The core problem: a typical ecology paper is 8,000–25,000 tokens, but a 7B model's context window is 4,096 tokens by default. We can't just truncate at the limit; we need to send the *right* content. + +### 3a. Text Cleaning + +The raw PyMuPDF output for many papers contains a lot of noise that confuses the LLM: DOI strings scattered through paragraphs, numbered references mixed into body text, figure captions, table footnotes. We added a text cleaner (`src/io/text_cleaner.py`) that strips these before the text reaches either the classifier or the LLM. + +### 3b. OCR for Scanned Papers + +Many ecology papers from the 1970s–1990s are only available as scans. PyMuPDF fails silently on these, returning an empty or near-empty string. We added Tesseract as a fallback triggered when the PyMuPDF extraction yields fewer than a threshold number of characters. Later (PR #37, Feb 2026) we added image denoising before the OCR pass to improve quality on low-contrast scans. + +**Note for future teams:** OCR caused workers to hang when running parallel PDF processing. We added a `--no-ocr` flag as an escape hatch when batch processing over many workers. If you increase `--workers`, test with and without OCR on a mixed batch. + +### 3c. Section Priority Ranking + +We tried several approaches before settling on the current one: + +- **First attempt:** Simple character-limit truncation from the top of the document. This sent the abstract + introduction to the LLM and missed the Results section where the actual stomach counts are reported. +- **Second attempt:** Page-priority selection. We tried to predict which pages were most informative. This was removed as dead code (PR #63) because it never worked reliably across paper formats. +- **Final approach:** Section-boundary detection via regex, with an explicit priority ranking: Abstract (0) → Results (1) → Methods/Study Area (2) → Tables (3) → Introduction (4) → Discussion (5). Sections are included in priority order until the character budget is exhausted. The entire section drop list (references, acknowledgments, appendices, supplementary materials) is stripped before this ranking runs. This is implemented in `src/extraction/llm_text.py:extract_key_sections()`. + +### 3d. Paragraph Scoring + +On top of section priority, we added paragraph-level filtering: paragraphs that contain no positive signal words (stomach, predator, prey, diet, feeding, etc.) and no negative signal words are dropped. This was particularly important for Methods sections, which often contain several paragraphs about study site geography or permit numbers that are irrelevant to extraction. + +--- + +## 4. Table Extraction + +Ecology papers frequently report stomach counts in tables rather than prose. We added `camelot-py` for structured table extraction (PR #30, Jan 2026). The first merge was reverted the same day because camelot's Ghostscript dependency wasn't installed in the CI environment and the tests failed. It was re-merged (PR #32) after fixing the CI environment and the Ghostscript dependency. + +**The current behavior:** Camelot extracts tables to plain text, which is then injected into the text stream at priority level 3 (after abstract, results, and methods sections). This matters because stomach count tables are often the single most information-dense part of a paper. + +**Known limitation:** Camelot works well on native PDFs. Scanned papers have no embedded table structure, so camelot gets nothing useful from them. Those papers fall back to whatever OCR extracted. + +--- + +## 5. LLM Prompt Evolution + +The system prompt went through several rewrites: + +**Initial prompt:** A short description of the task with a list of field names. Return rates were poor; the LLM frequently returned `null` for fields that were present in the text. + +**Added field descriptions (PR #36, Feb 2026):** Each field in the Pydantic schema got an explicit description including common phrasings found in the literature (e.g., "stomachs with no contents", "N empty", "N with no prey" for `num_empty_stomachs`). This alone improved the extraction rate substantially. + +**Added few-shot examples:** The prompt includes concrete worked examples of input text and expected JSON output. This helped the most with `study_date`, where models were frequently returning publication years instead of collection years until we added an example that made the distinction explicit. + +**Rewrote for diverse sampling methods (Mar 2026):** The original prompt assumed stomach dissection as the sampling method. Many papers use stomach pumping, scat analysis, or regurgitation. The prompt was rewritten to cover these cases after we noticed systematic null returns on a set of seabird diet papers that used regurgitation sampling. + +--- + +## 6. Pydantic Schema Design + +The `PredatorDietMetrics` model in `src/extraction/models.py` evolved significantly. + +**Original:** A plain Python dataclass with no validation. + +**Added Pydantic (PR #26 era):** Basic type annotations. No constraints. + +**Tightened constraints (Feb–Apr 2026):** +- `species_name`: regex enforcing binomial format (`^[A-Z][a-z]+(\s[a-z]+)*$`). This prevents the LLM from returning common names like "Northern pike" instead of *Esox lucius*. +- `study_date`: regex enforcing `YYYY` or `YYYY-YYYY` format only. +- `sample_size`: must be positive (> 0), not just non-negative. +- `num_empty_stomachs` and `num_nonempty_stomachs`: non-negative integers. + +**Auto-reconciliation:** If `num_empty_stomachs` and `num_nonempty_stomachs` are both present, `sample_size` is automatically set to their sum via a `@model_validator`. This prevents subtle inconsistencies when the LLM extracts counts from a table but reads the stated sample size from a different paragraph. + +--- + +## 7. Pipeline Architecture Decisions + +### 7a. Two-Stage Gating + +The classify-then-extract structure was intentional from the start. Running every PDF through the LLM would be prohibitively slow at scale. LLM extraction takes 30–90 seconds per paper depending on length and hardware. The XGBoost classifier reduces that to under a second per paper. The confidence threshold (`--confidence-threshold`, default 0.70) lets users trade recall for throughput. + +### 7b. Parallel Workers + +We added `--workers` to enable parallel PDF processing across CPU cores. The implementation uses Python `multiprocessing`. Two issues we found during testing: +1. Tesseract's subprocess model doesn't play well with Python's multiprocessor on Windows, so `--no-ocr` is recommended when using multiple workers on Windows. +2. SpellChecker (used during text cleaning) was being instantiated per-PDF. Moved to a module-level singleton. + +### 7c. LLM Retry Logic + +Ollama occasionally returns an empty response or times out, especially under memory pressure when the model is being evicted and reloaded. We added exponential backoff retry logic (3 attempts, 2-second base delay) in `llm_client.py`. The timeout per call is 120 seconds. These values were chosen empirically. On a machine with 16 GB RAM, 120 seconds is enough for qwen2.5:7b on papers up to ~15,000 characters. + +--- + +## 8. Dataset & Training Pipeline + +**Dataset source:** The [FracFeed global database](https://github.com/marknovak/FracFeed_DB) maintained by Mark Novak's lab. Contact Mark before retraining, as the labeled set has grown over time and the version used for the current model is not pinned in the repo. + +**Two training modes:** +- `--local`: Fastest. Reads PDFs from a local folder with `useful/` and `not-useful/` subdirectories. +- `--api`: Fetches the dataset from Google Drive via the service account in `.env`. Added (PR #19) because not all team members had the full dataset locally. **Important:** local mode is significantly faster for iteration because the API mode pulls several GB over the network each time. + +**Retraining:** See the Retraining section of `CONTRIBUTING.md` for the current steps. The short version: add labeled `.txt` files to `data/processed-text/` and update `data/labels.json`, then run `python -m src.classifier.train_model`. + +--- + +## 9. Repository Structure Evolution + +The `src/` directory was reorganized once near the end of the project (PR #64, May 2026), as the original flat structure became hard to navigate: + +| Old path | New path | +|---|---| +| `src/model/` | `src/classifier/` | +| `src/llm/` | `src/extraction/` | +| `src/preprocessing/` | `src/io/` | +| `classify_extract.py` (root) | `src/pipeline/classify_extract.py` | +| `extract-from-txt.py` (root) | `src/pipeline/extract_from_txt.py` | + +`requirements.txt` was also removed at this point in favor of `pyproject.toml` as the single source of dependency truth. + +--- + +## 10. Things That Didn't Work Out + +**Page-number tracking in extraction output:** We briefly added a `page_number` field to `PredatorDietMetrics` to record which page the stomach counts came from. This was reverted because the section-priority extraction splices content from multiple pages into a single string, making per-field page attribution unreliable. The `provenance` concept was replaced by the section-source labeling in the final output. + +**Structured output via OpenAI-compatible Ollama endpoint:** Early experiments called Ollama via its OpenAI-compatible REST API with response_format enforcement. We moved away from this to the native `ollama` Python library because the REST path had worse JSON schema compliance in the versions we tested, and the Python client gave us easier access to timeout and retry hooks. + +**BioMistral:** Covered in section 2 above. + + +--- + +## 11. Known Limitations and Suggested Future Work + +- **Single-paper extraction only:** The pipeline extracts one `PredatorDietMetrics` record per paper. Many diet survey papers report results for multiple species or across multiple years. A chunked multi-record extraction mode is partially stubbed in `src/extraction/chunked_extraction.py` but was not completed. +- **Provenance is coarse:** The current output records classifier confidence and extraction timestamps but doesn't link each extracted field back to a specific sentence. Adding sentence-level provenance would make downstream QA much faster. +- **Classifier retraining is manual:** There's no automated pipeline to re-train the classifier when new labeled data is added. A CI trigger on changes to `data/labels.json` would help. +- **OCR quality:** For very low-quality scans (pre-1970s papers), the current pipeline often produces unusable text even with denoising. A dedicated OCR quality check before extraction would reduce false negatives. From 9fa1c18173ce70122ef901ed13d34861231cf9d5 Mon Sep 17 00:00:00 2001 From: SeanClay10 Date: Mon, 18 May 2026 12:06:12 -0700 Subject: [PATCH 3/5] fix: incorrect flag --- documentation/DESIGN_DECISIONS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/DESIGN_DECISIONS.md b/documentation/DESIGN_DECISIONS.md index 9cff663..77d2355 100644 --- a/documentation/DESIGN_DECISIONS.md +++ b/documentation/DESIGN_DECISIONS.md @@ -54,7 +54,7 @@ The raw PyMuPDF output for many papers contains a lot of noise that confuses the Many ecology papers from the 1970s–1990s are only available as scans. PyMuPDF fails silently on these, returning an empty or near-empty string. We added Tesseract as a fallback triggered when the PyMuPDF extraction yields fewer than a threshold number of characters. Later (PR #37, Feb 2026) we added image denoising before the OCR pass to improve quality on low-contrast scans. -**Note for future teams:** OCR caused workers to hang when running parallel PDF processing. We added a `--no-ocr` flag as an escape hatch when batch processing over many workers. If you increase `--workers`, test with and without OCR on a mixed batch. +**Note for future teams:** OCR caused workers to hang when running parallel PDF processing. A `--no-ocr` flag was planned as an escape hatch but was not implemented in the final pipeline. If workers hang on a batch that includes scanned PDFs, reduce `--workers` to `1` as a workaround. ### 3c. Section Priority Ranking @@ -121,7 +121,7 @@ The classify-then-extract structure was intentional from the start. Running ever ### 7b. Parallel Workers We added `--workers` to enable parallel PDF processing across CPU cores. The implementation uses Python `multiprocessing`. Two issues we found during testing: -1. Tesseract's subprocess model doesn't play well with Python's multiprocessor on Windows, so `--no-ocr` is recommended when using multiple workers on Windows. +1. Tesseract's subprocess model doesn't play well with Python's multiprocessor on Windows. If workers hang, fall back to `--workers 1`. 2. SpellChecker (used during text cleaning) was being instantiated per-PDF. Moved to a module-level singleton. ### 7c. LLM Retry Logic From 4ec4e0450a85ee1fa7f229be20ddaff31d174d99 Mon Sep 17 00:00:00 2001 From: SeanClay10 Date: Mon, 18 May 2026 12:06:39 -0700 Subject: [PATCH 4/5] doc: setup guide for new members / users --- documentation/SETUP.md | 210 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 documentation/SETUP.md diff --git a/documentation/SETUP.md b/documentation/SETUP.md new file mode 100644 index 0000000..53a7ea1 --- /dev/null +++ b/documentation/SETUP.md @@ -0,0 +1,210 @@ +# Setup Guide + +Step-by-step instructions for getting FracFeedExtractor running on a new machine. + +--- + +## 1. System Dependencies + +Install the following before touching Python. These are system-level tools that `pip` cannot install. + +### Ollama (required — runs the LLM locally) + +Download and install from [ollama.com](https://ollama.com). Minimum 8 GB RAM; 16 GB recommended for `qwen2.5:7b`. + +After installing, pull the default extraction model: + +```bash +ollama pull qwen2.5:7b # ~5 GB download +ollama list # verify it appears +``` + +Ollama must be running in the background whenever you use the pipeline. On macOS and Windows it starts automatically after install. On Linux, run `ollama serve` in a separate terminal. + +### Tesseract OCR (required for scanned PDFs) + +| OS | Command | +|---|---| +| Windows | Download installer from [UB Mannheim](https://github.com/UB-Mannheim/tesseract/wiki), or `choco install tesseract` | +| macOS | `brew install tesseract` | +| Ubuntu/Debian | `sudo apt install tesseract-ocr` | + +After installing, verify it is on your PATH: + +```bash +tesseract --version +``` + +### Ghostscript (required for table extraction) + +`camelot-py`, the library used for PDF table parsing, requires Ghostscript as a system dependency. + +| OS | Command | +|---|---| +| Windows | Download from [ghostscript.com](https://www.ghostscript.com/releases/gsdnld.html), or `choco install ghostscript` | +| macOS | `brew install ghostscript` | +| Ubuntu/Debian | `sudo apt install ghostscript` | + +--- + +## 2. Clone the Repository + +```bash +git clone https://github.com/NovakLabOSU/FracFeedExtractor.git +cd FracFeedExtractor +``` + +--- + +## 3. Python Environment + +Requires Python 3.10 or higher. Check your version with `python --version` or `python3 --version`. + +### Linux / macOS + +```bash +python3 -m venv venv +source venv/bin/activate +pip install -e ".[dev]" +``` + +### Windows PowerShell + +```powershell +py -m venv venv +.\venv\Scripts\Activate.ps1 +pip install -e ".[dev]" +``` + +> If PowerShell blocks the activation script, run `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned` once and try again. + +The `.[dev]` install includes the core pipeline dependencies plus `pytest`, `coverage`, `black`, and `flake8`. + +--- + +## 4. Verify the Installation + +Run the test suite to confirm everything is wired up correctly: + +```bash +pytest tests/ +``` + +All tests should pass. If you see import errors, check that your virtual environment is activated and that `pip install -e ".[dev]"` completed without errors. + +--- + +## 5. Run the Pipeline + +The classifier artifacts are already committed to the repository (`src/classifier/models/`), so you can run the pipeline immediately after setup without retraining. + +```bash +# Classify and extract from a single PDF +python src/pipeline/classify_extract.py path/to/file.pdf + +# Classify and extract from a folder of PDFs +python src/pipeline/classify_extract.py path/to/pdfs/ +``` + +Results are written to: +- `data/results/metrics/` — one JSON file per paper classified as useful +- `data/results/summaries/` — a pipeline summary CSV covering all processed files + +### Full CLI reference + +```bash +python src/pipeline/classify_extract.py path/to/pdfs/ \ + --model-dir src/classifier/models \ + --llm-model qwen2.5:7b \ + --output-dir data/results \ + --confidence-threshold 0.70 \ + --max-chars 12000 \ + --num-ctx 4096 \ + --workers 1 +``` + +| Flag | Default | Description | +|---|---|---| +| `--model-dir` | `src/classifier/models` | Directory containing classifier artifacts | +| `--llm-model` | `qwen2.5:7b` | Ollama model used for extraction | +| `--output-dir` | `data/results` | Destination for JSON results and summary CSV | +| `--confidence-threshold` | `0.70` | Minimum classifier confidence to route a paper to the LLM | +| `--max-chars` | `12000` | Maximum characters sent to the LLM per paper | +| `--num-ctx` | `4096` | Ollama context window size in tokens | +| `--workers` | `1` | Number of parallel worker processes (`1` = sequential) | + +> **Windows + multiple workers:** Tesseract sometimes does not work reliably with Python multiprocessing on Windows. If workers hang or crash on a batch that includes scanned PDFs, reduce `--workers` back to `1`. + +--- + +## 6. Environment Variables (optional — only needed for API mode) + +If you intend to use `scripts/full_pipeline.py --api` to fetch the training dataset from Google Drive, you need a `.env` file in the project root. Copy the example and fill in the values: + +```bash +# Linux / macOS +cp .env.example .env +``` + +```powershell +# Windows PowerShell +Copy-Item .env.example .env +``` + +Then open `.env` and add the credentials. Contact the project partner (Mark Novak) or a returning team member to obtain the Google service account key and Drive folder ID. The `.env` file is excluded from version control — never commit it. + +--- + +## 7. Retraining the Classifier (optional) + +The committed classifier artifacts are ready to use. Retraining is only necessary if you add new labeled data. + +1. Add extracted text files to `data/processed-text/` and update `data/labels.json` with `"filename.txt": "useful"` or `"filename.txt": "not useful"` entries. +2. Run the trainer: + +```bash +python -m src.classifier.train_model +``` + +This overwrites the three artifacts in `src/classifier/models/`. See `documentation/CONTRIBUTING.md` for tunable hyperparameters. + +--- + +## 8. Sample Output + +A paper classified as useful produces a JSON file like this in `data/results/metrics/`: + +```json +{ + "source_file": "Smith_2002.pdf", + "extracted_at": "2026-04-24T14:32:00", + "metrics": { + "species_name": "Esox lucius", + "study_location": "Lake Windermere, UK", + "study_date": "1998-2000", + "num_empty_stomachs": 42, + "num_nonempty_stomachs": 158, + "sample_size": 200, + "fraction_feeding": 0.79 + } +} +``` + +--- + +## Troubleshooting + +**`tesseract` not found at runtime** +Tesseract is installed but not on PATH. On Windows, add the Tesseract install directory (e.g., `C:\Program Files\Tesseract-OCR`) to your system PATH and restart your terminal. + +**`camelot` import error or Ghostscript not found** +Ghostscript is not installed or not on PATH. Re-check step 1. On Windows, the Ghostscript installer does not always add itself to PATH automatically — check the install directory and add it manually if needed. + +**Ollama connection refused** +Ollama is not running. Start it with `ollama serve` (Linux) or open the Ollama app (macOS/Windows), then retry. + +**`ModuleNotFoundError` for any `src.*` import** +The package is not installed in editable mode. Run `pip install -e ".[dev]"` from the project root with your virtual environment activated. + +**PowerShell blocks `Activate.ps1`** +Run `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned` in PowerShell as your user (not as Administrator), then activate again. From 5ab77d5ff6244923ad06f1367fe51c1bf0757c45 Mon Sep 17 00:00:00 2001 From: SeanClay10 Date: Mon, 18 May 2026 12:12:15 -0700 Subject: [PATCH 5/5] fix: optional flag --- documentation/CONTRIBUTING.md | 3 ++- documentation/SETUP.md | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/documentation/CONTRIBUTING.md b/documentation/CONTRIBUTING.md index 1abd6ca..0856e74 100644 --- a/documentation/CONTRIBUTING.md +++ b/documentation/CONTRIBUTING.md @@ -31,7 +31,8 @@ All contributors must follow the Oregon State University Student Code of Conduct * macOS: `brew install tesseract` * Ubuntu/Debian: `sudo apt install tesseract-ocr` * After install, ensure `tesseract` is on your PATH: `tesseract --version` - * **Ghostscript** — required by `camelot-py` for PDF table extraction + * **Ghostscript** — optional; improves table extraction on bordered PDFs + * The pipeline works without it. Ghostscript is only used by camelot's lattice mode, a last-resort fallback for bordered tables that PyMuPDF and camelot stream mode both missed. * Windows: download from [ghostscript.com](https://www.ghostscript.com/releases/gsdnld.html), or `choco install ghostscript` * macOS: `brew install ghostscript` * Ubuntu/Debian: `sudo apt install ghostscript` diff --git a/documentation/SETUP.md b/documentation/SETUP.md index 53a7ea1..cc82946 100644 --- a/documentation/SETUP.md +++ b/documentation/SETUP.md @@ -35,9 +35,9 @@ After installing, verify it is on your PATH: tesseract --version ``` -### Ghostscript (required for table extraction) +### Ghostscript (optional — improves table extraction) -`camelot-py`, the library used for PDF table parsing, requires Ghostscript as a system dependency. +The pipeline extracts tables using PyMuPDF first, then camelot's stream mode as a fallback — neither requires Ghostscript. Ghostscript is only used by camelot's lattice mode, which is a last-resort fallback for bordered tables that the other two methods missed. The pipeline will run without it. | OS | Command | |---|---|