EADST

Image2Text: Automating Document Layout Analysis with Python and LayoutParser

Image2Text: Automating Document Layout Analysis with Python and LayoutParser

import cv2
import layoutparser as lp
import os
import json
from PIL import Image
import numpy as np

def to_serializable(obj):
    if isinstance(obj, (np.float32, np.float64)):
        return float(obj)
    elif isinstance(obj, np.ndarray):
        return obj.tolist()
    else:
        return obj

def process_image(image_path, model):
    # Read and preprocess the image
    image = cv2.imread(image_path)
    image = image[..., ::-1]  # Convert from BGR to RGB

    # Use the model to detect layout
    layout = model.detect(image)

    # Convert layout objects to a serializable format
    layout_data = []
    for obj in layout:
        obj_dict = obj.to_dict()
        # Iterate through the dictionary, converting all numpy data types to serializable types
        obj_dict_serializable = {key: to_serializable(value) for key, value in obj_dict.items()}
        layout_data.append(obj_dict_serializable)

    return layout_data

def save_layout_to_json(layout_data, json_path):
    # Save layout data to a JSON file
    with open(json_path, 'w') as json_file:
        json.dump(layout_data, json_file)

# Load the model
model = lp.PaddleDetectionLayoutModel(
    config_path="lp://PubLayNet/ppyolov2_r50vd_dcn_365e_publaynet/config",
    threshold=0.5,
    label_map={0: "Text", 1: "Title", 2: "List", 3: "Table", 4: "Figure"},
    enforce_cpu=False,
    enable_mkldnn=True
)

def process_folder(folder_path):
    # Iterate through all files and subfolders in the folder
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith('.jpg'):  # Check if it's a JPG file
                file_path = os.path.join(root, file)
                layout_data = process_image(file_path, model)  # Process the image

                # Create JSON file path
                json_path = os.path.splitext(file_path)[0] + '.json'
                save_layout_to_json(layout_data, json_path)  # Save layout data as JSON


# Specify the folder path to process
folder_path = '/your_folder_path/'
process_folder(folder_path)
相关标签
About Me
XD
Goals determine what you are going to be.
Category
标签云
Template Tiktoken 证件照 财报 IndexTTS2 Card Video Jupyter 签证 Qwen2.5 第一性原理 Data NLTK EXCEL Hungarian 自我改进 Ubuntu FP16 API网关 PDB SPIE Safetensors Clash Markdown TensorRT ms-swift UI Ptyhon UNIX XML Docker scipy 图形思考法 BTC Gemma CC Llama Plotly Password 多线程 Shortcut CEIR SQL 论文速读 WAN Bert Firewall Base64 Review LoRA Nginx SVR CLAP Use HuggingFace Color 强化学习 VGG-16 Zip Knowledge FP64 OpenAI Plate GPTQ Mixtral Augmentation BeautifulSoup 腾讯云 printf Django Distillation 算法题 RGB transformers Image2Text Disk Linux Anaconda Random LLAMA OCR Numpy Permission Miniforge Windows Hotel FastAPI 报税 论文 Jev Domain VSCode llama.cpp Cloudreve 长期记忆 CAM PDF LaTeX Conda Quantization C++ Pandas CTC tqdm CSV Qwen2 NameSilo Pickle Land GoogLeNet Logo Paper Breakpoint LLM Crawler Github GPT4 Excel hf AI Bin Michelin Google 顶会 FlashAttention Freesound Web Claude OpenCV v0.dev Interview Agent PyCharm torchinfo mmap 云服务器 Website Rebuttal 音频 LeetCode Food HaggingFace SAM 域名 git-lfs TensorFlow v2ray Harness PyTorch CV uwsgi Math Algorithm 版权 JSON logger 阿里云 Quantize DeepSeek Magnet Pytorch XGBoost Dataset 飞书 COCO FP32 RAR Bitcoin WebCrawler Pillow FP8 ResNet-50 净利润 Translation News Heatmap BF16 Vmess Git Tracking ChatGPT DeepStream Python icon Search 公式 TTS Attention tar YOLO Transformers Paddle uWSGI Input TSV 搞笑 递归学习法 API NLP Statistics Bipartite 继承 VPN Baidu Jetson Streamlit 图标 Tensor ModelScope Sklearn CUDA 多进程 关于博主 QWEN git Proxy GIT InvalidArgumentError Datetime GGML RL Animate SQLite Vim diffusers Qwen MD5 Hilton PIP ONNX Diagram
站点统计

本站现有博文339篇,共被浏览1002526次

本站已经建立2712天!

热门文章
文章归档
回到顶部