pdf2img python編

คือว่า โปรแกรมpdf24เมื่อกี้มันพัง… พอinput pdfหลายๆไฟล์พร้อมกัน มันบอกว่าหา imageที่extractแล้วเก็บไว้ใน tmp folder ไม่เจอ .. ซึ่งปิดโปรแกรมเปิดใหม่ก็ไม่หาย เหมือนจะต้องรีเซ็ตคอม…
ก็เลย ถาม chatpgtให้มันเขียนโค๊ดให้หน่อย + แก้เองเยอะอยู่
ได้ความว่า

import fitz  # pip install PyMuPDF
import os
import shutil
from pathlib import Path

def extract_images_from_pdf(pdf_path, save_folder):
    doc = fitz.open(pdf_path)
    print(pdf_path)
    save_prefix = "_".join(element[:10] for element in pdf_path.split("\\"))
    #save_prefix = pdf_path.replace("\\", "-")[0:20]
    print(save_prefix)

    img_index =0
    for page_number in range(doc.page_count):
        page = doc[page_number]
        images = page.get_images(full=True)
        #print("found images "+len(images))


        for img_info in images:
            img_index += 1
            image_index = img_info[0]
            #print(img_index,image_index)
            base_image = doc.extract_image(image_index)

            image_bytes = base_image["image"]
            image_filename = f"{save_folder}/{save_prefix}_{img_index}.jpg"

            with open(image_filename, "wb") as image_file:
                image_file.write(image_bytes)
    print("extracted images = "+str(img_index)+"\n")
    doc.close()
    
    
def extract_images_from_pdfs(pdf_folder, save_folder):
    files = [f for f in os.listdir(pdf_folder) if os.path.isfile(os.path.join(pdf_folder, f))]
    for file in files:
        #print(file)
        if file.lower().endswith(('.pdf')):
            filepath = os.path.join(pdf_folder, file)
            extract_images_from_pdf(filepath, save_folder)
    print("Done!")
            
extract_images_from_pdfs('Session 5 - Interfaces for the Body and Beyond','extracted_images')

คือใส่ชื่อ folder เป็น input แล้วอ่าน pdf ในโฟล์เดอร์นั้น extract image
ซึงอันนี้ ถ้ารูปต้นฉบับเป็น transparent มา มันจะใส่ background สีดำให้ ต่างกับตัวโปรแกรมpdf24 ที่เซฟเป็นสีขาวให้ ดูคลีนตากว่า

ละก็contrastสีเพี้ยนน ไม่รู้ว่ารูปต้นฉบับเป็นไฟล์อะไร

folder ismar นี่ล่มมาก ทั้งสีเพี้ยน ภาพมาเป็นเศษๆ ไม่รู้เป็นไร

กับอีกอย่างที่ยังทำไม่ได้คือ ถ้ารูปต้นฉบับ embed เป็น pdf มา (มักจะเป็นพวกกราฟที่อยากได้ …) ทั้งโปรแกรมpdf24 ทั้ง python lib ตัวนี้ยัง extract ออกมาให้ไม่ได้

pdf2img

พอดีจะหาไอเดียทำกราฟใส่เปเปอร์ ปกติก็จะนั่งเปิดอ่านทีละอัน นั่งcropอันที่ชอบละsaveเก็บไว้ในfolderบ้าง แปะใน powerpoint/excel บ้างแล้วแต่อารมณ์ เสร็จละก็มักจะหาไม่เจอว่ารูปนี้มาจากเปเปอร์ไหน….

ด้วยความขี้เกียจcropรูปละ เลยเซิร์จหาโปรแกรมละก็เจอ มีให้ดาวโหลดโปรแกรมลงคอมด้วยนะ
https://tools.pdf24.org/en/extract-images

คือลากไฟล์เยอะๆใส่ได้เลย ละมันจะextractรูปภาพออมาให้ ตอนที่เซฟยังแยกโฟลเดอร์ตามชื่อ paper อยู่ โชคดีที่ชื่อรูปยังมี prefix เป็นชื่อโฟลเดอร์อยู่ (ถ้าทำในเว็ป ชื่อรูปไม่มี prefix เป็น 0.png 1.png 2.png ไป)
เดี่ยวเขียน python ให้มันเอารูปออกมาจากโฟลเดอร์จะได้ดูง่ายๆ ถาม chatgpt กับเขียนเพิ่มเองอีกนิด

import os
import shutil
from pathlib import Path

def move_images_and_delete_folders(folder_path):
    print("process on :"+folder_path)
    # Get a list of all subdirectories
    subdirectories = [f for f in os.listdir(folder_path) if os.path.isdir(os.path.join(folder_path, f))]

    # Iterate through each subdirectory
    for subdir in subdirectories:
        print(subdir)
        subdir_path = os.path.join(folder_path, subdir)
        if not os.path.isdir(subdir_path):
            print("not a directory, skip!")
            continue

        # Get a list of all files in the subdirectory
        files = [f for f in os.listdir(subdir_path) if os.path.isfile(os.path.join(subdir_path, f))]
        folder_contain_image = False
        # Iterate through each file in the subdirectory
        for file in files:
            # Check if the file is an image (you can customize this check based on your file extensions)
            if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
                # Move the image file to the parent directory
                source_file = os.path.join(subdir_path, file)
                destination_file = os.path.join(folder_path, file)
                shutil.move(source_file, destination_file)
                folder_contain_image=True

        # Delete the empty subdirectory
        if(folder_contain_image):
            os.rmdir(subdir_path)

# Replace 'your_folder_path' with the path to the folder containing subfolders
folder_path = os.getcwd()

move_images_and_delete_folders(folder_path)

説明変数

説明変数คืออะไร เหมือนจะแปลออกแต่ก็งงๆ แล้วก็มันมีชื่อแถวๆนี้อยู่หลายตัว ตัวไหนเป็นตัวไหนไม่รู้ละ เลยมาเปิดเว็ปเช็คดู

ก็จะมี กลุ่มตัวแปร X ที่เป็น input

  • 説明変数:explanatory variable ตัวแปรอธิบาย
  • 予測変数:predictor variable ตัวแปรทำนาย
  • 独立変数:independent variable ตัวแปรอิสระ

แต่แอบงง 予測変数 ตัวแปรทำนาย แปลมาแล้วชื่อเหมือนจะเป็น output

予測変数とは、結果変数 (目的変数や応答変数とも呼ばれます) を予測するために使用する入力変数です。
ตัวแปรทำนายคือ ตัวแปรinputที่ใช้ทำนายผลลัพธ์…โอเคตามนั้น
มันใช้ในการทำนาย ไม่ใช่ผลลัพธ์จากการทำนาย

ส่วนอีกกลุ่มคือ ตัวแปร Y ที่เป็น output/result มีดังนี้

  • 目的変数:response variable ตัวแปรวัตถุประสงค์
  • 結果変数:outcome variable ตัวแปรผลลัพธ์
  • 従属変数:dependent variable ตัวแปรตาม
  • 応答変数:response variable ตัวแปรตอนสนอง

เรามักจะเจอ Y กับ X เป็นคู่ๆตามนี้ (ทำไมเค้าเอา Y นำ X นะ…)

「目的変数&説明変数」
「従属変数&独立変数」

reference:
https://yoshida931.hatenablog.com/entry/2018/05/13/232801
https://best-biostatistics.com/correlation_regression/variables.html