Repository navigation
Faster multi-page batches and optional document-based file names.
What's new
- Shorter pauses between sheets (#1). The SANE
fujitsudriver holds each page until it is cropped and written out before feeding the next sheet, so host-side work showed up as a pause between pages. Scans are now written as uncompressed TIFF instead of PNG (PNG encoding cost about half a second per side), and the scanner is asked to read ahead into its own memory (--buffermode=On) and stage the next sheet (--prepick=On) — options the driver otherwise leaves off. Both are passed only whenscanimage -Areports them as active for your scanner.defaults write com.joshkerr.MelonBerry fastFeed -bool NOturns them off if a scanner misbehaves. - Name files from the document (#2). A new setting, Name files by: What's on the first page, names the PDF
<date> <title> <kind>— for example2026-02-19 Acme Energy Statement.pdf. The date is the first one on the page that isn't a due or expiry date (the scan date if there is none), the title is the largest text in the top half of the page, and the kind is a word like Invoice, Receipt or Statement if one appears. Recognition runs on your Mac with Apple's Vision framework; nothing is sent anywhere. Pages with no usable text keep theScan <date> <time>name. Off by default. - The
scancommand-line script gets the same feeder options and TIFF change.
Install
Requires macOS 14 or later and Homebrew:
brew install sane-backends ocrmypdf img2pdfFrom source (recommended):
git clone https://github.com/joshkerr/melonberry.git
cd melonberry
./build.sh --installPrebuilt app: download MelonBerry-1.1.zip below, unzip, and move MelonBerry.app to /Applications. It's Apple Silicon only and ad-hoc signed (not notarized), so macOS will block the first launch. Either allow it under System Settings → Privacy & Security → Open Anyway, or clear the quarantine flag:
xattr -dr com.apple.quarantine /Applications/MelonBerry.appQuit the vendor's scanning software first — only one program can hold the scanner's USB connection. See the README for details and limitations.