| name | mofa-paddleocr |
| description | Complex document parsing with PaddleOCR. Convert PDFs and document images to structured Markdown and JSON. Triggers: paddleocr, pdf parsing, document ocr, pdf to markdown, document extraction |
| requires_bins | python3, pip |
| always | false |
MOFA PaddleOCR Document Parsing
ๅบไบ PaddleOCR ็ๅคๆๆๆกฃ่งฃๆๅทฅๅ
ท๏ผๅฐ PDF ๅๆๆกฃๅพๅๆบ่ฝ่ฝฌๆขไธบไฟ็ๅๅง็ปๆ็ Markdown ๅ JSONใ
Onboarding / ๅผๅงไฝฟ็จ
ๅ็ฝฎ่ฆๆฑ
-
Python 3.8+
python3 --version
-
ๅฎ่ฃ
PaddleOCR
pip install paddlepaddle
pip install paddlepaddle-gpu
pip install paddleocr
-
ๅฎ่ฃ
้ขๅคไพ่ต
pip install pdf2image pymupdf Pillow
-
้ช่ฏๅฎ่ฃ
python3 -c "from paddleocr import PaddleOCR; print('PaddleOCR installed')"
ๅฟซ้ๅผๅง
python3 -c "
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='ch')
result = ocr.ocr('document.png', cls=True)
for line in result[0]:
print(line[1][0]) # ๆๅๆๆฌ
"
python3 -c "
from paddleocr import PaddleOCR
import fitz # PyMuPDF
ocr = PaddleOCR(use_angle_cls=True, lang='ch')
pdf_path = 'document.pdf'
doc = fitz.open(pdf_path)
for page_num in range(len(doc)):
page = doc[page_num]
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))
img_path = f'/tmp/page_{page_num}.png'
pix.save(img_path)
result = ocr.ocr(img_path, cls=True)
print(f'=== Page {page_num + 1} ===')
for line in result[0]:
print(line[1][0])
"
ๆ
้ๆ้ค
| ้ฎ้ข | ่งฃๅณๆนๆก |
|---|
paddlepaddle not found | ่ฟ่ก pip install paddlepaddle |
CUDA error | ไฝฟ็จ CPU ็ๆฌ: pip install paddlepaddle |
pdf2image error | ๅฎ่ฃ
poppler: brew install poppler (mac) / apt-get install poppler-utils (linux) |
| ไธญๆ่ฏๅซๆๆๅทฎ | ็กฎ่ฎค lang='ch' ๅๆฐ |
| ๅ
ๅญไธ่ถณ | ้ไฝ PDF ๅ่พจ็: matrix=fitz.Matrix(1, 1) |
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MOFA PADDLEOCR PIPELINE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
User Request (PDF/Image)
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 1: INPUT โ
โ โโโโโโโโโโโโโ โ
โ โข Validate file format (PDF/PNG/JPG) โ
โ โข Check file size โ
โ โข Determine output format (markdown/json) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 2: CONVERT (PDF โ Images) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ PDF input: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PyMuPDF (fitz) โ โ
โ โ โข Render pages to images โ โ
โ โ โข Multiplier: 2x for better OCR quality โ โ
โ โ โข Output: page_1.png, page_2.png... โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Image input: Skip this phase โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 3: OCR (PaddleOCR) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ PaddleOCR Pipeline: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 1. Text Detection (DBNet) โ โ
โ โ โ Find text regions โ โ
โ โ โ โ
โ โ 2. Text Recognition (CRNN) โ โ
โ โ โ Recognize characters โ โ
โ โ โ โ
โ โ 3. Layout Analysis (optional) โ โ
โ โ โ Detect tables, titles, paragraphs โ โ
โ โ โ โ
โ โ 4. Output: Bounding boxes + Text โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 4: STRUCTURE โ
โ โโโโโโโโโโโโโโโโโ โ
โ โข Analyze text layout โ
โ โข Detect tables and lists โ
โ โข Identify headings and paragraphs โ
โ โข Preserve reading order โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 5: OUTPUT โ
โ โโโโโโโโโโโโโ โ
โ โ
โ Markdown format: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ # Page 1 โ โ
โ โ โ โ
โ โ ## Title Section โ โ
โ โ Extracted text content... โ โ
โ โ โ โ
โ โ | Table | Header | โ โ
โ โ |----------|----------| โ โ
โ โ | Cell 1 | Cell 2 | โ โ
โ โ โ โ
โ โ --- โ โ
โ โ # Page 2 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ JSON format: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ { โ โ
โ โ "pages": [{ โ โ
โ โ "page_num": 1, โ โ
โ โ "text": "...", โ โ
โ โ "blocks": [{ โ โ
โ โ "text": "...", โ โ
โ โ "box": [x1,y1,x2,y2], โ โ
โ โ "confidence": 0.95 โ โ
โ โ }] โ โ
โ โ }] โ โ
โ โ } โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Features
1. Multi-Format Input
| Format | Support | Notes |
|---|
| PDF | โ
| Renders each page to image |
| PNG | โ
| Best quality |
| JPG/JPEG | โ
| Compressed, may affect OCR |
| TIFF | โ
| Multi-page supported |
| BMP | โ
| Uncommon |
2. OCR Languages
ocr = PaddleOCR(use_angle_cls=True, lang='ch')
ocr = PaddleOCR(use_angle_cls=True, lang='en')
ocr = PaddleOCR(use_angle_cls=True, lang='latin')
3. Output Formats
for line in result[0]:
print(line[1][0])
for line in result[0]:
text = line[1][0]
confidence = line[1][1]
box = line[0]
print(f"{text} (conf: {confidence:.2f})")
{
"text": "่ฏๅซๆๆฌ",
"confidence": 0.95,
"box": [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
}
Usage Examples
็คบไพ 1: ๅบ็กๅพ็ OCR
from paddleocr import PaddleOCR
ocr = PaddleOCR(
use_angle_cls=True,
lang='ch',
show_log=False
)
result = ocr.ocr('document.png', cls=True)
full_text = '\n'.join([line[1][0] for line in result[0]])
print(full_text)
็คบไพ 2: PDF ่ฝฌ Markdown
import fitz
from paddleocr import PaddleOCR
import os
def pdf_to_markdown(pdf_path, output_md):
ocr = PaddleOCR(use_angle_cls=True, lang='ch', show_log=False)
doc = fitz.open(pdf_path)
markdown = []
for page_num in range(len(doc)):
page = doc[page_num]
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))
temp_img = f'/tmp/page_{page_num}.png'
pix.save(temp_img)
result = ocr.ocr(temp_img, cls=True)
markdown.append(f"# Page {page_num + 1}\n\n")
if result[0]:
for line in result[0]:
text = line[1][0]
confidence = line[1][1]
if confidence > 0.8:
markdown.append(f"{text}\n")
markdown.append("\n---\n\n")
os.remove(temp_img)
with open(output_md, 'w', encoding='utf-8') as f:
f.writelines(markdown)
print(f"Saved to {output_md}")
pdf_to_markdown('input.pdf', 'output.md')
็คบไพ 3: ่กจๆ ผ่ฏๅซ
from paddleocr import PaddleOCR
ocr = PaddleOCR(
use_angle_cls=True,
lang='ch',
det_model_dir='ch_PP-OCRv4_det',
rec_model_dir='ch_PP-OCRv4_rec',
table=True,
show_log=False
)
result = ocr.ocr('table_image.png', cls=True)
if 'table' in result:
for table in result['table']:
print(table['html'])
็คบไพ 4: ๆน้ๅค็
import glob
from paddleocr import PaddleOCR
import json
ocr = PaddleOCR(use_angle_cls=True, lang='ch', show_log=False)
def batch_process(image_dir, output_json):
results = []
for img_path in glob.glob(f"{image_dir}/*"):
if img_path.lower().endswith(('.png', '.jpg', '.jpeg')):
print(f"Processing {img_path}...")
result = ocr.ocr(img_path, cls=True)
texts = []
if result[0]:
for line in result[0]:
texts.append({
'text': line[1][0],
'confidence': float(line[1][1]),
'box': line[0]
})
results.append({
'file': img_path,
'content': texts
})
with open(output_json, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
batch_process('./scanned_docs/', 'output.json')
Configuration
OCR ๅๆฐ
ocr = PaddleOCR(
det_model_dir='path/to/det_model',
det_limit_side_len=960,
det_limit_type='max',
rec_model_dir='path/to/rec_model',
rec_image_shape='3, 48, 320',
rec_batch_num=6,
use_angle_cls=True,
cls_model_dir='path/to/cls_model',
cls_batch_num=6,
lang='ch',
show_log=False,
use_gpu=False,
use_mp=False,
total_process_num=1
)
Performance
| ไปปๅก | ๆถ้ด (CPU) | ๆถ้ด (GPU) |
|---|
| ๅ้กต PDF (A4) | 2-5s | 0.5-1s |
| ๅๅผ ๅพ็ | 1-3s | 0.3-0.5s |
| 10้กต PDF | 20-50s | 5-10s |
ไผๅๅปบ่ฎฎ:
- ไฝฟ็จ GPU ๅ ้
- ้ไฝ PDF ๆธฒๆๅ่พจ็
- ๅฏ็จๅค่ฟ็จ
use_mp=True
- ๆน้ๅค็
Integration with Other Skills
ไธ mofa-research-2.0 ็ปๅ
research_result = research("topic")
pdf_url = research_result['pdf_url']
text = paddleocr_extract('downloaded.pdf')
analysis = analyze(text)
ไธ mofa-defuddle ็ปๅ
if is_scanned_pdf(file):
text = paddleocr_extract(file)
else:
text = defuddle_extract(file)
Output Requirements
ๅฟ
้กป็ๆ็ๆไปถ
./paddleocr/{task-slug}/
โโโ output.md # Markdown ่พๅบ
โโโ output.json # ็ปๆๅ JSON
โโโ metadata.json # ๅค็ๅ
ๆฐๆฎ
โ โโโ page_count
โ โโโ processing_time
โ โโโ avg_confidence
โโโ images/ # ไธญ้ดๅพ็ (ๅฏ้)
โโโ page_1.png
โโโ ...
่ดจ้ๆฃๆฅๆธ
ๅ
Related Skills
mofa-defuddle
Web ๅ
ๅฎนๆๅๅทฅๅ
ทใ
ๅบๅซ:
- mofa-defuddle: ๆๅ็ฝ้กต/ๆๆกฃ็ๆๅญๅ
ๅฎน
- mofa-paddleocr: OCR ่ฏๅซๅพ็ไธญ็ๆๅญ
็ปๅไฝฟ็จ:
ๆซๆ็ PDF โ mofa-paddleocr โ ๆๅญ
ๆๅญ็ PDF โ mofa-defuddle โ ๆๅญ
mofa-research-2.0
ๆทฑๅบฆ็ ็ฉถ็ฎก้ใ
็ปๅไฝฟ็จ:
mofa-research-2.0: ๅ็ฐๆๆกฃ
mofa-paddleocr: ๆๅๅ
ๅฎน
mofa-research-2.0: ๅๆๅ
ๅฎน
mofa-firecrawl / mofa-crawler
็ฝ้กต็ฌๅๅทฅๅ
ทใ
็ปๅไฝฟ็จ:
mofa-firecrawl: ็ฌๅ็ฝ็ซ่ทๅ PDF
mofa-paddleocr: ๆๅ PDF ๅ
ๅฎน