$npx -y skills add berabuddies/Semia --skill pdf-ocr-layoutMultimodal document deep analysis tool based on Zhipu GLM-OCR, GLM-4.7, and GLM-4.6V.
| 1 | # GLM-OCR Multimodal Deep Analysis |
| 2 | |
| 3 | This tool builds a high-precision document parsing pipeline: using **GLM-OCR** for layout element extraction, calling **GLM-4.7** for logical interpretation of table data, and calling **GLM-4.6V** for multimodal visual interpretation of images and charts. |
| 4 | |
| 5 | ## Pipeline Implementation Architecture |
| 6 | |
| 7 | This Skill consists of two core script stages, orchestrated through `glm_ocr_pipeline.py`: |
| 8 | |
| 9 | ### 1. Extraction Stage (`scripts/glm_ocr_extract.py`) |
| 10 | |
| 11 | - **Core Model**: GLM-OCR |
| 12 | - **Function**: Responsible for physical layout analysis of documents |
| 13 | - **Output**: Extract table HTML and clean to Markdown, automatically crop independent chart image files based on Bbox coordinates, and generate intermediate JSON containing full page reading order |
| 14 | |
| 15 | ### 2. Understanding Stage (`scripts/glm_understanding.py`) |
| 16 | |
| 17 | - **Core Model**: GLM-4.7 (text) / GLM-4.6V (visual) |
| 18 | - **Function**: Responsible for deep semantic reasoning of content |
| 19 | - **Logic**: |
| 20 | - **Tables**: Combine full text context, use GLM-4.7 to analyze business meaning of Markdown table data |
| 21 | - **Charts**: Combine full text context + cropped images, use GLM-4.6V for multimodal visual analysis |
| 22 | |
| 23 | ## Invocation Methods |
| 24 | |
| 25 | ### Command Line Invocation |
| 26 | |
| 27 | ```bash |
| 28 | # Run complete pipeline: extraction -> cropping -> understanding analysis, supports input in .pdf, .jpg, .png and other formats |
| 29 | python scripts/glm_ocr_pipeline.py \ |
| 30 | --file_path "/data/report_page.jpg" \ |
| 31 | --output_dir "/data/output" |
| 32 | ``` |
| 33 | |
| 34 | ## API Parameter Description |
| 35 | |
| 36 | | Parameter | Type | Required | Description | |
| 37 | | --- | --- | --- | --- | |
| 38 | | file_path | string | ✅ | Absolute path to input file (supports .pdf, .png, .jpg) | |
| 39 | | output_dir | string | ✅ | Result output directory (used to save cropped images and JSON reports) | |
| 40 | |
| 41 | ## Return Result Structure (JSON) |
| 42 | |
| 43 | The tool returns a list containing layout elements and their deep understanding: |
| 44 | |
| 45 | ```json |
| 46 | [ |
| 47 | { |
| 48 | "type": "table", |
| 49 | "bbox": [100, 200, 500, 600], |
| 50 | "content_info": "| Revenue | Q1 |\n|---|---|\n| 100M | ... |", |
| 51 | "deep_understanding": "(Generated by GLM-4.7) This table shows Q1 2024 revenue data. Combined with the 'market expansion strategy' mentioned in paragraph 3 of the body text, it can be seen that..." |
| 52 | }, |
| 53 | { |
| 54 | "type": "image", |
| 55 | "bbox": [100, 700, 500, 900], |
| 56 | "content_info": "/data/output/images/report_page_img_2.png", |
| 57 | "deep_understanding": "(Generated by GLM-4.6V) This is a system architecture diagram. Visually, it shows the flow of clients connecting to servers through a Load Balancer. Combined with the title 'Fig 3' and context, this diagram is mainly used to illustrate..." |
| 58 | } |
| 59 | ] |
| 60 | ``` |
| 61 | |
| 62 | ## Environment Requirements |
| 63 | |
| 64 | - Environment variable `ZHIPU_API_KEY` must be configured |
| 65 | - Python 3.8+ |
| 66 | - Dependencies: `zhipuai`, `pillow`, `beautifulsoup4` |
| 67 | |
| 68 | ## Notes |
| 69 | |
| 70 | ### 1. Model Routing Strategy |
| 71 | |
| 72 | - **Table (表格)**: Content passed to **GLM-4.7**, combined with full text Markdown context for logical reasoning |
| 73 | - **Image (图片)**: Image Base64 encoded and passed to **GLM-4.6V**, combined with OCR-extracted titles and full text context for multimodal understanding |
| 74 | |
| 75 | ### 2. Context Association |
| 76 | |
| 77 | All understanding is based on the complete layout logic of the document (Markdown Context), not isolated fragment analysis. |
| 78 | |
| 79 | ### 3. PDF Processing |
| 80 | |
| 81 | Multi-page PDFs default to processing the first page. For batch processing, please extend the loop logic at the script level. |