Skip to content

Releases: velofy/terbium

terbium 2.0.0

Choose a tag to compare

@anishfyi anishfyi released this 26 Oct 16:53
6f62992

The first PyPI release since 0.9.7. 0.10.0 was published on GitHub only, so pip install terbium-parse now brings everything listed under 0.10.0 as well as the fixes below.

2.0.0 follows 0.10.0 directly. The jump in the version number is not an API break: code written for 0.10.0 runs unchanged.

Fixed

  • No more FutureWarning: The fitz API is deprecated on every import and every command run with PyMuPDF 2.0. terbium imports PyMuPDF as pymupdf, and falls back to fitz only on PyMuPDF 1.24.0 to 1.24.2, which predate that name.
  • Resume lines that mention a section word are kept. A line such as "Led a team with deep Python experience" was read as a heading: it was dropped from the content and started a new section. A heading is now a line that is exactly a section word, or a line of at most four words in which a word starts with a section word or phrase, such as "Work Experience", "Academics" or "Educational Background". A section word inside another word, as in "Inexperienced", no longer counts. Bulleted lines are always content. The trade-off: a heading of five words or more, such as "Education, Training and Professional Development", is now a content line of the section before it.
  • The image manifest's dominant_color no longer uses Image.getdata, which Pillow 12.1 deprecates and Pillow 14 removes. On Pillow 14 the colour would have come back empty with no error.

Documentation

  • The README leads with the terbium app tile, names NodeMaven as primary sponsor with the October tracking links, and no longer says that PyPI serves 0.9.7. Its links to repository files are absolute, so they work on PyPI.
  • The parse and build_catalog docstrings and the developer notes in docs/ (DESIGN, ROADMAP, TAXONOMY) now match the code.

Known issues

  • The 0.10.0 known issues below still apply.
  • build_catalog(..., ocr=True) without Tesseract prints the advice for an OCR pass that already ran, so it points at the vision lane instead of telling you to install Tesseract. Leave ocr="auto".
  • build_catalog(..., ai=True) skips the AI fill for photo rows; pass terbium.AI().
  • A phone number written (555) 123-4567 comes out as 555) 123-4567.
  • When an invoice or receipt is read from its page layout rather than a table, a label line that ends in digits, such as Receipt No: R-8891 or Date: 03/22/2024, also becomes a line item, and the total can appear as two total records.
  • A resume line of four words or fewer that names a section is still read as a heading, so Skills: Python, SQL starts the skills section and the text after the colon is dropped, and a short line such as "Experienced Python developer" starts the experience section.

pip install -U terbium-parse

PyPI: https://pypi.org/project/terbium-parse/2.0.0/ · Docs: https://velofy.co/terbium/

terbium 0.10.0

Choose a tag to compare

@anishfyi anishfyi released this 29 Sep 20:22

terbium 0.10.0 adds invoices, receipts, resumes, and image files to the parser, and fixes the invoice AI step so it actually runs. This is the first tagged GitHub release.

What changed

  • Added: document classification picks the schema for you: catalog, lookbook, transaction, resume, table, or deck. Override it with --type or doc_type=.
  • Added: a transaction schema for invoices, bills, receipts, purchase orders, and quotes, and a resume schema.
  • Added: CSV, self-contained HTML, and terminal table output for every document type, with new command line flags --type, --html, and --open.
  • Added: PNG, JPG, WEBP, and TIFF input through local Tesseract OCR.
  • Added: GPT, Kimi, and Grok as optional AI providers. Claude stays the default when several keys are set. terbium still runs fully without any key.
  • Fixed: the invoice and receipt AI step never ran, because it looked for a record type the parser does not emit. It now fills missing summary fields and adds line items only when the parser found none.
  • Fixed: used_ai is reported only when a model call returned a response.
  • Fixed: terminal tables line up when cells are truncated.
  • Fixed: the catalog message no longer suggests ocr=True when Tesseract is not installed.
  • Fixed: OpenAI o-series models are called with max_completion_tokens. The OpenAI-based extras now need openai>=1.45.
  • Tests: 46 pass on Python 3.9 and 3.12.

Known issues

  • The opus tier on OpenAI (o3-mini) may reject image input. This was not verified against the API.
  • Model IDs for each provider are taken from source and were not verified against the provider APIs.

Install

PyPI serves 0.9.7 until 0.10.0 is uploaded there. Until then, install 0.10.0 from this release:

pip install "https://github.com/velofy/terbium/releases/download/v0.10.0/terbium_parse-0.10.0-py3-none-any.whl"

Or from the tag:

pip install "git+https://github.com/velofy/terbium@v0.10.0"

The package installs as terbium-parse and imports as terbium. The PyPI project named terbium is unrelated.

Documentation

https://velofy.co/terbium/