@nilsfischer/pdf2text
v1.0.0
Published
Extract text and diagrams from PDFs and images using Gemini AI
Readme
pdf2text
Extract text and diagrams from PDFs and images using Gemini AI.
Install
Executable (global):
npm install -g @nilsfischer/pdf2textLibrary (project dependency):
npm install @nilsfischer/pdf2textCLI Usage
Authenticate once (stores key encrypted in system keychain):
pdf2text auth set --api-key YOUR_GEMINI_API_KEYRun extraction:
pdf2text input.pdf
pdf2text input.pdf --format latex --output ./results --splitRuntime key resolution order:
--api-keyGEMINI_API_KEY- Stored keychain key (
pdf2text auth set)
If keychain support is unavailable, use GEMINI_API_KEY or --api-key.
Node Library API
Use full pipeline and filesystem APIs from the Node subpath:
import { runPipeline, parsePageRanges } from "@nilsfischer/pdf2text/node";
await runPipeline({
input: "./slides.pdf",
apiKey: process.env.GEMINI_API_KEY!,
format: "markdown",
outputDir: "./output",
split: false,
noDiagrams: false,
pages: parsePageRanges("1-3"),
scale: 2,
concurrency: 5,
verbose: false,
});Web Library API
Use browser-safe extraction APIs from the web subpath:
import { extractFromImageBytes } from "@nilsfischer/pdf2text/web";
const imageBytes = new Uint8Array(await file.arrayBuffer());
const result = await extractFromImageBytes(imageBytes, {
apiKey: "YOUR_GEMINI_API_KEY",
format: "markdown",
noDiagrams: false,
});
console.log(result.text);
console.log(result.diagrams);Shared API
Shared helpers available from @nilsfischer/pdf2text:
parsePageRangesgetFormatInstructionsgetFormatExamplereplacePlaceholdersbuildGeminiPrompt
Options
| Flag | Alias | Default | Description |
|------|-------|---------|-------------|
| -f, --format | | markdown | Output format: markdown, latex, or text |
| -o, --output | | ./output | Output directory |
| -s, --split | | false | Split output into per-page files |
| --diagrams | | true | Enable diagram detection (use --no-diagrams to disable) |
| -p, --pages | | all | Pages to process, e.g. 1-5,8,12-14 |
| --scale | | 2 | PDF render scale factor (2 ≈ 144 DPI) |
| -c, --concurrency | | 5 | Max parallel Gemini API calls |
| --api-key | | keychain/env | Gemini API key (flag overrides keychain/env) |
| -v, --verbose | | false | Verbose logging output |
Local Development
bun install
npm run build
node dist/cli.js --helpPublish
npm publish