nano-pdf 是一个用于 PDF 处理的技能,旨在高效处理文档工作流。
用途
该技能提供 PDF 处理工具,包括文本提取、文本挖掘、表单填写、PDF 操作以及 OCR 集成。
适用场景
适用于涉及 PDF 数据提取(例如从扫描文档中提取)、报告文本分析、自动化表单提交、文件合并/拆分,或对非文本 PDF 应用 OCR 的任务。可应用于数据管道、文档自动化脚本,或与 OCR 服务集成以处理非结构化数据。
主要能力
文本提取:从 PDF 中提取纯文本或结构化数据,支持带密码的加密文件;通过 Tesseract 集成对图像型 PDF 使用 OCR。
文本挖掘:分析提取的文本以识别关键词、情感或模式;例如统计文档中短语出现的次数。
表单填写:使用 JSON 数据填充交互式 PDF 表单;支持将表单扁平化为静态 PDF。
PDF 操作:合并、拆分、旋转或为 PDF 添加水印;可高效处理最多 500 页的文档。
OCR 集成:使用外部 API 将扫描版 PDF 转换为可搜索文本;需要配置 Tesseract 或类似引擎。
使用方式
可通过 CLI 用于快速脚本,或通过 API 用于服务端集成。批量处理时,可在 shell 脚本中串联命令;Web 应用中,可在循环中使用 API 调用。始终显式指定输入/输出路径。模式:先提取文本,再按需挖掘或操作。对于 OCR 密集型任务,在 PDF 操作前先预处理图像。
常用命令/API
CLI 命令使用 nano-pdf 二进制文件;API 端点位于 https://api.opencclaw.com/nano-pdf/。认证需要 $NANO_PDF_API_KEY 环境变量。
提取文本:nano-pdf extract --file input.pdf --output text.txt --ocr true(当文本不可选择时添加 OCR)。
挖掘文本:nano-pdf mine --input text.txt --keywords "AI,robot" --output results.json(输出关键词频率)。
填写表单:nano-pdf fill --template form.pdf --data '{"field1": "value"}' --output filled.pdf。
操作 PDF:nano-pdf merge --files file1.pdf file2.pdf --output combined.pdf。
提取的 API 端点:POST /extract,请求体为 {"file": "base64encoded_content", "ocr": true},请求头为 Authorization: Bearer $NANO_PDF_API_KEY。
代码片段(Python):
import requests response = requests.post('https://api.opencclaw.com/nano-pdf/extract', headers={'Authorization': f'Bearer {os.environ["NANO_PDF_API_KEY"]}'}, json={'file': 'base64data'}) print(response.json()['text'])
配置格式:API 请求体使用 JSON,例如 {"file": "path", "options": {"ocr_engine": "tesseract", "language": "en"}};CLI 使用基于标志的配置,如 --config config.json。
集成说明
集成时设置 $NANO_PDF_API_KEY 以进行认证请求;本地使用时,通过 pip install nano-pdf 安装并作为模块导入。可与其他工具结合:将 CLI 输出管道传输到 NLP 库进行挖掘,或在 Node.js 中通过 HTTP 请求使用。对于 OCR,确保 Tesseract 已安装并配置在环境路径中。在沙箱中测试集成以验证 API 速率限制(例如 100 请求/分钟)。
错误处理
检查常见错误,如文件未找到(退出码 404)、无效 API 密钥(401)或 OCR 失败(例如未安装 Tesseract)。在代码中使用 try-except:
try: result = nano_pdf.extract('input.pdf') except FileNotFoundError: print("Error: File does not exist.") except Exception as e: print(f"API Error: {e} - Check $NANO_PDF_API_KEY.")
对于 CLI,解析 stderr 输出;对瞬时错误(例如网络问题)使用指数退避重试。始终验证输入,例如在处理前确保 PDF 未损坏。
示例 1:从 PDF 提取并挖掘文本
从扫描版发票 PDF 中提取文本并挖掘产品名称:
运行:nano-pdf extract --file invoice.pdf --output invoice_text.txt --ocr true
然后:nano-pdf mine --input invoice_text.txt --keywords "product" --output analysis.json 这会生成包含关键词出现次数的 JSON,供进一步处理。
示例 2:填写并操作表单 PDF
填写求职申请表并与求职信合并:
准备 JSON 数据:{"name": "John Doe", "position": "Engineer"}
执行:nano-pdf fill --template application.pdf --data application_data.json --output filled_app.pdf
合并:nano-pdf merge --files filled_app.pdf cover_letter.pdf --output final_packet.pdf 输出为可直接提交的单个 PDF。
图关系
相关:"ocr-tool"(用于增强 OCR 能力)、"document-parser"(用于更广泛的文件类型支持)、"text-analyzer"(用于高级挖掘集成)。
集群:通过 "community" 集群连接到 "data-extraction" 和 "automation-utils" 等技能。