PDF Text Extractor技能使用说明
2026-03-26
新闻来源:网淘吧
围观:55
电脑广告
手机广告
PDF-文本提取器 - 从PDF文件中提取文本
Vernox实用技能 - 非常适合文档数字化。
概述
PDF-文本提取器是一个零依赖的工具,用于从PDF文件中提取文本内容。支持嵌入式文本提取(针对基于文本的PDF)和OCR(针对扫描文档)。
功能
✅ 文本提取
- 无需外部工具即可从PDF中提取文本
- 支持基于文本和扫描的PDF
- 保留文档结构和格式
- 快速提取(基于文本的PDF仅需毫秒)
✅ OCR支持
- 使用Tesseract.js处理扫描文档
- 支持多种语言(英语、西班牙语、法语、德语)
- 可配置的OCR质量/速度
- 在可能的情况下回退到文本提取
✅ 批量处理
- 一次性处理多个PDF
- 为文档工作流提供批量提取
- 对大文件进行进度跟踪
- 错误处理和重试逻辑
✅ 输出选项
- 纯文本输出
- 包含元数据的JSON输出
- Markdown转换
- HTML输出(保留链接)
✅ 实用功能
- 逐页提取
- 字符/字数统计
- 语言检测
- 元数据提取(作者、标题、创建日期)
安装
clawhub install pdf-text-extractor
快速开始
从PDF提取文本
const result = await extractText({
pdfPath: './document.pdf',
options: {
outputFormat: 'text',
ocr: true,
language: 'eng'
}
});
console.log(result.text);
console.log(`Pages: ${result.pages}`);
console.log(`Words: ${result.wordCount}`);
批量提取多个PDF
const results = await extractBatch({
pdfFiles: [
'./document1.pdf',
'./document2.pdf',
'./document3.pdf'
],
options: {
outputFormat: 'json',
ocr: true
}
});
console.log(`Extracted ${results.length} PDFs`);
使用OCR提取
const result = await extractText({
pdfPath: './scanned-document.pdf',
options: {
ocr: true,
language: 'eng',
ocrQuality: 'high'
}
});
// 将使用OCR(检测到扫描文档)
工具函数
extractText
从单个PDF文件提取文本内容。
参数:
pdfPath(字符串,必需):PDF文件路径options(对象,可选):提取选项outputFormat(字符串):'text' | 'json' | 'markdown' | 'html'ocr(布尔值):为扫描文档启用OCRlanguage(字符串):OCR语言代码('eng'、'spa'、'fra'、'deu')preserveFormatting(布尔值):保留标题/结构minConfidence(数字):OCR最低置信度得分(0-100)
返回:
text(字符串):提取的文本内容pages(数字):处理的页数wordCount(数字):总字数charCount(数字):总字符数language(字符串):检测到的语言metadata(对象):PDF元数据(标题、作者、创建日期)method(字符串):'text' 或 'ocr'(提取方法)
extractBatch
批量提取多个PDF文件的文本。
参数:
pdfFiles(数组,必需):PDF文件路径数组options(对象,可选):与 extractText 相同
返回:
结果(数组):提取结果数组总页数(数字):所有 PDF 的总页数成功计数(数字):成功提取的数量失败计数(数字):提取失败的数量错误(数组):失败的错误详情
统计字数
统计提取文本中的字数。
参数:
文本(字符串,必需):要统计的文本选项(对象,可选):最小单词长度(数字):每个单词的最小字符数(默认:3)排除数字(布尔值):不将数字计为单词按页统计(布尔值):返回每页的字数统计
Returns:
字数统计(数字):总字数字符数(数字):总字符数页面字数统计(数组):每页字数平均每页字数(数字):平均每页字数
语言检测
检测提取文本的语言。
参数:
文本(字符串,必需):要分析的文本最低置信度(数字):检测所需的最低置信度
返回:
语言(字符串):检测到的语言代码语言名称(字符串):完整的语言名称置信度(数字):置信度分数(0-100)
使用场景
文档数字化
- 将纸质文档转换为数字文本
- 处理发票和收据
- 将合同与协议数字化
- 物理文档归档
内容分析
- 提取文本供分析工具使用
- 为大语言模型处理准备内容
- 清理扫描文档
- 解析基于PDF的报告
数据提取
- 从PDF报告中提取数据
- 从PDF中解析表格
- 提取结构化数据
- 自动化文档工作流
文本处理
- 为翻译准备内容
- 清理OCR输出
- 提取特定章节
- 在PDF内容内搜索
性能
基于文本的PDF
- 速度:10页PDF约需100毫秒
- 准确率:100%(精确文本)
- 内存:典型文档约10MB
OCR处理
- 速度:每页约1-3秒(高质量)
- 准确度:85-95%(取决于扫描质量)
- 内存使用:OCR处理期间峰值约50-100MB
技术细节
PDF解析
- 使用原生PDF.js库
- 直接提取文本层(无需OCR)
- 保留文档结构
- 处理受密码保护的PDF
OCR引擎
- 底层使用Tesseract.js
- 支持100多种语言
- 可调节质量/速度权衡
- 提供准确度置信度评分
依赖项
- 零外部依赖
- 仅使用Node.js内置模块
- 技能包内包含PDF.js
- 捆绑Tesseract.js
错误处理
无效PDF
- 清晰错误信息
- 建议修复方案(检查文件格式)
- 跳转到批次中的下一个文件
OCR 失败
- 报告置信度分数
- 建议以更高质量重新扫描
- 回退到基本提取
内存问题
- 针对大文件的流处理
- 进度报告
- 优雅降级
配置
编辑config.json:
{
"ocr": {
"enabled": true,
"defaultLanguage": "eng",
"quality": "medium",
"languages": ["eng", "spa", "fra", "deu"]
},
"output": {
"defaultFormat": "text",
"preserveFormatting": true,
"includeMetadata": true
},
"batch": {
"maxConcurrent": 3,
"timeoutSeconds": 30
}
}
示例
从发票中提取
const invoice = await extractText('./invoice.pdf');
console.log(invoice.text);
// "发票 #12345 日期:2026-02-04..."
从扫描合同中提取
const contract = await extractText('./scanned-contract.pdf', {
ocr: true,
language: 'eng',
ocrQuality: 'high'
});
console.log(contract.text);
// "协议 本合同由..."
批量处理文档
const docs = await extractBatch([
'./doc1.pdf',
'./doc2.pdf',
'./doc3.pdf',
'./doc4.pdf'
]);
console.log(`已处理 ${docs.successCount}/${docs.results.length} 个文档`);
故障排除
OCR 不工作
- 检查 PDF 是否确实是扫描件(非基于文本)
- 尝试不同的质量设置(低/中/高)
- 确保语言与文档匹配
- 检查扫描图像质量
提取结果为空
- PDF可能仅为图像
- OCR识别置信度过低失败
- 尝试不同的语言设置
处理速度慢
- 大型PDF耗时更长
- 降低质量以提升速度
- 分批处理
提示
最佳效果
- 尽可能使用基于文本的PDF(速度更快,100%准确)
- 用于OCR的高质量扫描(300 DPI以上)
- 扫描前清洁背景
- 使用正确的语言设置
性能优化
- 批量处理多个文件
- 对基于文本的PDF禁用OCR
- 在可接受的情况下降低OCR质量以提升速度
路线图
- 支持PDF/A
- 高级OCR预处理
- 从OCR中提取表格
- 手写文字OCR
- PDF表单字段提取
- 批量语言检测
- 置信度评分可视化
许可证
MIT
从PDF中提取文本。快速、准确、零依赖。🔮
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~