Extract PDF text content using shell tools or Python libraries when read_file PDF handler fails
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-reliable-pdf-extraction-ac5f89-119c11fb3dc4 ,按照其中的说明把「reliable-pdf-extraction-ac5f89」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
The read_file tool with filetype='pdf' can be unreliable for PDF text extraction. It may:
Use run_shell with dedicated PDF extraction tools instead of relying on read_file for PDFs.
pdftotext input.pdf output.txt
Or to extract to stdout:
pdftotext input.pdf -
With layout preservation:
pdftotext -layout input.pdf output.txt
pdfinfo input.pdf
Useful for checking page count, dimensions, and PDF properties before extraction.
import fitz # PyMuPDF
doc = fitz.open("input.pdf")
text = ""
for page in doc:
text += page.get_text()
doc.close()
import pdfplumber
with pdfplumber.open("input.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
tables = page.extract_tables()
Check PDF exists and is readable:
pdfinfo input.pdf 2>/dev/null || echo "PDF not accessible"
Extract text using pdftotext:
pdftotext -layout input.pdf - > extracted_text.txt
If pdftotext fails, try Python fallback:
import fitz
doc = fitz.open("input.pdf")
for i, page in enumerate(doc):
print(f"--- Page {i+1} ---")
print(page.get_text())
doc.close()
Verify extraction succeeded:
| Tool | Best For |
|---|---|
pdftotext | Fast, simple text extraction |
pdftotext -layout | Preserving spacing/formatting |
PyMuPDF | Complex PDFs, programmatic access |
pdfplumber | Tables and structured data |
# In your agent workflow, prefer this pattern:
result = run_shell(command="pdftotext document.pdf -", timeout=30)
if result.stdout and len(result.stdout.strip()) > 0:
content = result.stdout
else:
# Fallback to Python
content = execute_python_to_extract_pdf("document.pdf")
apt-get install poppler-utils (for pdftotext/pdfinfo)pip install pymupdf pdfplumber