Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ThinkfleetAI/thinkfleet-engine --skill pdf-reader명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | pdf-reader |
| description | PDF reading and extraction |
| metadata | {"thinkfleetbot_emoji":"📄","requires_bins":["python3"],"requires_env":[]} |
Tools for reading, extracting, and manipulating PDF files.
# Using pdftotext (poppler-utils) if available
pdftotext input.pdf output.txt
# Using python with PyPDF2
python3 -c "
import PyPDF2
with open('input.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
for i, page in enumerate(reader.pages):
text = page.extract_text()
print(f'--- Page {i+1} ---')
print(text)
"
python3 -c "
import sys
try:
import tabula
dfs = tabula.read_pdf('input.pdf', pages='all')
for i, df in enumerate(dfs):
print(f'--- Table {i+1} ---')
print(df.to_csv(index=False))
except ImportError:
print('Install tabula-py: pip install tabula-py')
sys.exit(1)
"
python3 -c "
import PyPDF2, json
with open('input.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
meta = reader.metadata
info = {
'title': meta.title if meta else None,
'author': meta.author if meta else None,
'subject': meta.subject if meta else None,
'creator': meta.creator if meta else None,
'pages': len(reader.pages),
}
print(json.dumps(info, indent=2, default=str))
"
python3 -c "
import PyPDF2
with open('input.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
text = []
for page in reader.pages:
text.append(page.extract_text() or '')
with open('output.txt', 'w') as out:
out.write('\n\n'.join(text))
print('Converted to output.txt')
"
python3 -c "
import PyPDF2, sys
merger = PyPDF2.PdfMerger()
files = sys.argv[1:]
for pdf in files:
merger.append(pdf)
merger.write('merged.pdf')
merger.close()
print(f'Merged {len(files)} files into merged.pdf')
" file1.pdf file2.pdf file3.pdf
python3 -c "
import PyPDF2
with open('input.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
for i, page in enumerate(reader.pages):
writer = PyPDF2.PdfWriter()
writer.add_page(page)
out_path = f'page_{i+1:03d}.pdf'
with open(out_path, 'wb') as out:
writer.write(out)
print(f'Wrote {out_path}')
print(f'Split into {len(reader.pages)} files')
"
python3 -c "
import PyPDF2, os
os.makedirs('extracted_images', exist_ok=True)
with open('input.pdf', 'rb') as f:
reader = PyPDF2.PdfReader(f)
img_count = 0
for page_num, page in enumerate(reader.pages):
for img_key in page.images:
img_count += 1
img = page.images[img_key]
ext = os.path.splitext(img.name)[1] or '.png'
out_path = f'extracted_images/page{page_num+1}_img{img_count}{ext}'
with open(out_path, 'wb') as out:
out.write(img.data)
print(f'Extracted {out_path}')
print(f'Total images extracted: {img_count}')
"