Skip to main content

woolworm (Pre-Alpha State)

Hello Northwestern Digitization team (and anyone else who may be following along), welcome to woolworm, your new (hopefully) one-stop shop for digitization. I have attempted to abstract as much of the intricacies of image transformation in python. At least to the best of my ability. While we are working on this grant, I will be working on build automation and a CLI for you all so that it can be even easier to use. The point of this repo is in case I die, it can be developed and such. Here is my current feature list, where I am open to suggestions or requests, because I like this sort of thing:

Road to v0.1.0

  • API
    • Load image
    • Deskew
    • Intelligent document binarization/grayscale
    • Tesseract OCR
    • Standalone Ollama LLM OCR
    • Marker Document Understanding LLM OCR
    • HathiTrust (currently experimental in a standalone script)

Road to v1.0.0

  • Pipelines
    • Image processing
    • OCR (do we need a pipeline for this? It is a single function)
    • HathiTrust (Migrated Brendan's Ruby script to python)
    • ???
    • Profit
  • CLI (To be done later)
  • Figure out how the hell I publish a python package

Automation, supercomputing interfacing, remote directories will be handled in a different repository. This is to track one step of the data science process: data cleaning.

Prerequisites

You will want to familiarize yourself with the absolute basics of calling object-methods. If you want to use any LLM models, you will need to install Ollama. Feel free to contact me if you need assistance in setting up Ollama.

Quickstart

If you are extremely impatient, you can get started with two lines of code

from woolworm import Woolworm

Woolworm.Pipelines.process_image("inputfilename.jpg", "outputfilename.jpg")

In the backend, it looks like this. You can find this code in the cookbook directory

from woolworm import Woolworm

p = woolworm()  # Creates the "woolworm" class

f = "filename.jpg"
base_name = f.replace(".jpg", "")

# Step 1: Load original
img = p.load(f)

# Step 2: de-skew
img = p.deskew_with_hough(img)

# Step 3: This is kinda weird, and currently fine-tuned for use with NU's environmental impact statements
# Long story short, the programming will use some heuristics to detect if the image is a diagram or mostly text
# If the program thinks it is text, it will binarize, if it thinks it is a diagram, it will not.
img = p.binarize_or_gray(img)

p.save_image(img)

Sample output: Sample Output in a nicely formatted table

Metadata

Release files for woolworm 0.0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for woolworm 0.0.10
File Size Uploaded
woolworm-0.0.10.tar.gz 7.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for woolworm 0.0.10
File Interpreter ABI Platform
woolworm-0.0.10-py3-none-any.whl Python 3 none any Details

Total release size: 14.3 kB

Release files / woolworm-0.0.10.tar.gz

Download URL woolworm-0.0.10.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
62bee209e8091597b139b5de665e1c235e9f35c1dca87ea2b54d742b9aa793c9
BLAKE2b-256 checksum
How to use checksums
3963877dbf5fe871dbf1ac89f67e772165a0e0cc28f797381dae3432a3b714e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2025.

Transparency log

Release files / woolworm-0.0.10-py3-none-any.whl

Download URL woolworm-0.0.10-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22e20b5b4b30820fbb2a05aa7074cc9b440e6908ccfbc1eed0a2d34e175253de
BLAKE2b-256 checksum
How to use checksums
98c87c48214c3c999dcf384035c304c3ad941f650bf6173eab88a7f452c6cbe8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.10 This release

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page