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

本站现有博文332篇,共被浏览890501

本站已经建立2592天!

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