PDFtk(PDF Toolkit)介紹

 PDFtk 是一款免費、開源的 PDF 處理工具,支持在命令列中對 PDF 進行多種操作,如拆分、合併、加密、解密和檢查 PDF 文件屬性。


📌 PDFtk 安裝

Windows

  1. 下載並安裝 PDFtk Server:

    • 官網下載:PDFtk Server(Windows 版本)。

    • 安裝後,將 PDFtk 安裝目錄(如 C:\Program Files (x86)\PDFtk Server\bin)加入系統環境變數 PATH

macOS / Linux

  • 在 macOS 或 Linux 上,通常可以透過 Homebrew 安裝:

    brew install pdftk-java

📌 PDFtk 基本使用方法

以下是一些常用的 PDFtk 指令和範例:

1. 檢查 PDF 屬性

  • 指令:

    pdftk yourfile.pdf dump_data
  • 範例:

    pdftk example.pdf dump_data
  • 效果:這會顯示 PDF 的基本屬性(頁數、加密狀態、標題、作者等)。


2. 分割 PDF

  • 指令:

    pdftk yourfile.pdf burst
  • 範例:

    pdftk example.pdf burst
  • 效果:將 PDF 內每一頁分割成獨立檔案。


3. 合併 PDF

  • 指令:

    pdftk file1.pdf file2.pdf cat output merged.pdf
  • 範例:

    pdftk page1.pdf page2.pdf cat output combined.pdf
  • 效果:將兩個 PDF 文件合併為一個。


4. 提取特定頁面

  • 指令:

    pdftk yourfile.pdf cat 1-3 output output.pdf
  • 範例:

    pdftk example.pdf cat 2-4 output extracted.pdf
  • 效果:從第 2 到第 4 頁提取,生成新 PDF。


5. 加密 PDF

  • 指令:

    pdftk yourfile.pdf output secured.pdf owner_pw your_password
  • 範例:

    pdftk example.pdf output secured.pdf owner_pw 1234
  • 效果:為 PDF 添加密碼保護(擁有者密碼)。


6. 檢查 PDF 是否是文字或影像型

雖然 PDFtk 無法直接判斷 PDF 是文字型還是影像型,但你可以結合指令進行檢測:

  • 指令:

    pdftk example.pdf dump_data | grep -i text
  • 說明

    • 如果檔案是文字型 PDF,則應該會顯示與「文字」或「字型」相關的內容。

    • 如果是純影像型,則很可能不會有這類資料。


📌 更進階應用:批次處理

  • 如果你有大量 PDF 檔案要檢查或處理,可以使用 Bash 或批次檔:

    for file in *.pdf; do
    pdftk "$file" dump_data | grep -i text && echo "$file 是文字型 PDF" || echo "$file 是影像型 PDF" done
  • 效果:此腳本會逐一檢查目錄下所有 PDF,並顯示每個檔案的類型。


進階應用:

使用 PDFtk 與 OCR 工具將影像型 PDF 轉為文字型 PDF

PDFtk 本身無法進行光學字符辨識(OCR),但可以與其他 OCR 工具(如 Tesseract)搭配來將影像型 PDF 轉為文字型 PDF。以下我將教你如何結合 PDFtk 和 Tesseract OCR 來實現這個功能。


📌 必備工具

  1. PDFtk(已安裝)

  2. Tesseract OCR

  3. Poppler(pdftoppm 和 pdftotext)

    • 用於將 PDF 頁面轉為影像格式,方便 OCR 處理。

    • Windows:從 Poppler for Windows 下載並設定 PATH。

    • macOS/Linux

      brew install poppler

📌 PDFtk + Tesseract + Poppler:OCR 工作流程

  1. 使用 PDFtk 分割 PDF 頁面

  2. 將每頁 PDF 轉為影像格式(如 PNG)

  3. 使用 Tesseract OCR 將影像轉為文字

  4. 將 OCR 結果合併成文字型 PDF


📌 步驟詳解與範例

步驟 1:使用 PDFtk 分割 PDF

  • 假設我們有一個影像型 PDF 檔案:scanned_document.pdf

  • 指令:

    pdftk scanned_document.pdf burst
  • 效果:這會將每一頁分割成單獨 PDF(pg_0001.pdf、pg_0002.pdf...)。


步驟 2:將 PDF 頁面轉為影像格式

  • 使用 pdftoppm 將分割的 PDF 頁面轉為 PNG 影像。

  • 指令:

    pdftoppm pg_0001.pdf page_0001 -png
  • 效果:這會將 PDF 第一頁轉成影像檔 page_0001.png


步驟 3:使用 Tesseract 進行 OCR

  • 對影像檔執行 OCR:

    tesseract page_0001.png page_0001_ocr -l eng --dpi 300 pdf
  • 解釋

    • -l eng:使用英文語言庫(可更改為其他語言)。

    • --dpi 300:設定 DPI 為 300,提升識別效果。

    • pdf:輸出格式為 PDF。

  • 效果:產生 page_0001_ocr.pdf,這是已進行 OCR 的文字型 PDF。


步驟 4:合併所有 OCR PDF

  • 如果你有多頁 PDF,可以將它們合併為單一 PDF:

    pdftk page_0001_ocr.pdf page_0002_ocr.pdf cat output final_ocr_document.pdf
  • 效果:這會將所有 OCR 處理過的頁面合併成一個完整的文字型 PDF。


📌 自動化腳本(進階)

如果你需要處理大量 PDF,可以考慮使用 Bash 腳本(Linux/macOS)或批次檔(Windows)來自動化流程。

範例:Bash 腳本

#!/bin/bash
# 檢查是否提供 PDF 檔名 if [ -z "$1" ]; then echo "請提供 PDF 檔案名稱。" exit 1 fi # 變數設置 input_pdf="$1" output_pdf="ocr_$1" mkdir temp_ocr # 使用 PDFtk 分割 PDF pdftk "$input_pdf" burst output temp_ocr/page_%04d.pdf # 將每一頁進行 OCR for file in temp_ocr/*.pdf; do page=$(basename "$file" .pdf) pdftoppm "$file" temp_ocr/$page -png tesseract temp_ocr/${page}-1.png temp_ocr/${page}_ocr -l eng --dpi 300 pdf done # 合併所有 OCR 頁面 pdftk temp_ocr/*_ocr.pdf cat output "$output_pdf" # 清理暫存檔 rm -rf temp_ocr echo "OCR 完成,輸出檔:$output_pdf"
  • 如何使用

    1. 將上述腳本儲存為 ocr_pdf.sh

    2. 賦予可執行權限:


      chmod +x ocr_pdf.sh
    3. 執行腳本:


      ./ocr_pdf.sh your_scanned_document.pdf
  • 效果:會自動將你的影像型 PDF 轉為文字型 PDF,並輸出為 ocr_your_scanned_document.pdf


📌 這樣的腳本應用優點

  • 可處理大量 PDF。

  • 可輕鬆改成批次檔(Windows)。

  • 可調整 Tesseract 語言庫,支援多語言 OCR(如繁中、簡中)。


📌 Windows 批次檔:PDFtk + Tesseract OCR 自動化

📌 檔案名稱:OCR_PDF.bat

這個批次檔會自動:

  1. 使用 PDFtk 分割 PDF 頁面。

  2. 使用 Poppler 將每頁轉為 PNG 影像。

  3. 使用 Tesseract OCR 進行辨識。

  4. 合併所有 OCR 頁面為文字型 PDF。


📌 批次檔內容

@echo off
setlocal enabledelayedexpansion :: 檢查 PDFtk, Tesseract, 和 Poppler 是否已安裝 where pdftk >nul 2>&1 || (echo PDFtk 未安裝,請確認已安裝並設定環境變數 & exit /b) where tesseract >nul 2>&1 || (echo Tesseract 未安裝,請確認已安裝並設定環境變數 & exit /b) where pdftoppm >nul 2>&1 || (echo Poppler 未安裝,請確認已安裝並設定環境變數 & exit /b) :: 請使用者選擇 PDF 檔案 set /p input_pdf=請輸入要進行 OCR 的 PDF 檔案名稱(包括副檔名): if not exist "%input_pdf%" ( echo 找不到檔案:%input_pdf% exit /b ) :: 建立臨時資料夾 set temp_dir=temp_ocr mkdir %temp_dir% :: 使用 PDFtk 分割 PDF 頁面 pdftk "%input_pdf%" burst output %temp_dir%\page_%%04d.pdf :: OCR 每一頁 for %%f in (%temp_dir%\*.pdf) do ( set filename=%%~nf pdftoppm "%%f" "%temp_dir%\!filename!" -png tesseract "%temp_dir%\!filename!-1.png" "%temp_dir%\!filename!_ocr" -l eng --dpi 300 pdf ) :: 合併所有 OCR 文字型 PDF pdftk %temp_dir%\*_ocr.pdf cat output "OCR_%input_pdf%" :: 清理臨時資料夾 rmdir /s /q %temp_dir% echo OCR 完成,輸出檔:OCR_%input_pdf% pause

📌 使用說明

  1. 將這段程式碼儲存為 OCR_PDF.bat

  2. 確保你已安裝:

    • PDFtk Server 並已設定在環境變數中。

    • Tesseract OCR 並已設定在環境變數中。

    • Poppler(pdftoppm) 並已設定在環境變數中。

  3. 將要進行 OCR 的 PDF 檔案與批次檔放在同一資料夾中。

  4. 雙擊 OCR_PDF.bat,並輸入 PDF 檔案名稱(含副檔名)。


📌 使用範例

假設你有一個名為 scanned_document.pdf 的影像型 PDF:

  1. scanned_document.pdfOCR_PDF.bat 放在同一資料夾。

  2. 雙擊 OCR_PDF.bat,輸入:

    mathematica

    請輸入要進行 OCRPDF 檔案名稱(包括副檔名):scanned_document.pdf
  3. 程式會自動:

    • 分割 PDF 為單獨頁面。

    • 將每頁轉為 PNG 影像。

    • 使用 Tesseract OCR 進行辨識。

    • 將所有 OCR 頁面合併為單一文字型 PDF,檔名為 OCR_scanned_document.pdf


📌 可調整選項

  • 語言設定

    • 預設為英文(-l eng)。如需其他語言(如繁中),請下載 Tesseract 語言庫,並修改這一行:

      batch

      tesseract "%temp_dir%\!filename!-1.png" "%temp_dir%\!filename!_ocr" -l chi_tra --dpi 300 pdf
  • DPI(解析度)

    • 預設為 300 DPI,可視需求調整:

      --dpi 300
First Post : 2025/05/16

深入了解 PDF 檔案格式及應用

或許你曾經有過這個疑問,為什麼有些可以直接做文字選取,有些卻沒有辦法;這是什麼原因呢?

PDF 檔案之所以有些可以直接選取文字,有些卻無法選取,主要原因在於 PDF 檔案的「內容結構」不同:

1. 可選取文字的 PDF

  • 文字型 PDF(Text-based PDF):這種 PDF 是由文字檔(如 Word、Excel)或其他數位文件轉成的。它包含實際的文字數據,因此可以直接選取、複製和搜尋。

  • 特徵:文字會被視為可編輯的數據,且可以被 OCR(光學字符辨識)工具識別。

2. 無法選取文字的 PDF

  • 影像型 PDF(Image-based PDF):這種 PDF 是將實體文件(如掃描的紙本文件)以影像形式儲存,因此文件中的文字只是圖片的一部分,無法直接選取或編輯。

  • 特徵:即使文字看起來像是文字,但實際上它是圖片中的像素,無法直接選取。

3. 混合型 PDF(Hybrid PDF)

  • 部分區域是文字型,部分是影像型。例如,一些掃描後使用 OCR 處理過的 PDF,雖然表面上看起來是可選取的文字,但如果 OCR 未正確處理,可能有部分區域仍然是影像。

要如何將影像型 PDF 轉為可選取文字的 PDF?
  • 使用 PDF 編輯軟體(如 Adobe Acrobat Pro)進行 OCR(光學字符辨識)。
  • 在線工具(如 Google Drive 的 PDF OCR 功能)也可以做到。
既然有這些不同類型的PDF,是不是有什麼方法可以直接檢查它的檔案格式 flie format ?

你可以使用多種方法來檢查 PDF 檔案格式,並確定它是 文字型 PDF影像型 PDF 還是 混合型 PDF

方法 1:使用 PDF 讀取器或編輯器

  • Adobe Acrobat Pro:開啟 PDF 後,選取文字。如果可以選取並複製,那它是文字型 PDF。

  • 檢查內容分層

    • 使用 「檢視」>「檢查 PDF」「內容」面板 查看 PDF 的內容結構。

    • 如果你看到文字圖層(Text Layer),代表是文字型 PDF。

方法 2:透過 PDF 軟體的屬性檢查

  • Adobe Acrobat Pro,選擇 「檔案」>「屬性」(File > Properties)。

  • 在「描述」頁面中,查看「製作者」欄位:

    • 如果是掃描軟體(如「Scanner」或「Image」),可能是影像型 PDF。

    • 如果顯示如「Microsoft Word」或「Acrobat PDF」,則通常是文字型 PDF。

方法 3:檢查 PDF 原始碼(進階)

  • 使用文字編輯器(如 Notepad++ 或 VS Code)開啟 PDF。

  • 搜尋以下關鍵字:

    • /Font:代表 PDF 中包含文字數據。

    • /Image/XObject:表示 PDF 包含影像。

  • 如果同時有 /Font/Image,那可能是混合型 PDF。

方法 4:使用線上工具

  • 有些線上工具(如 PDF24 或 SmallPDF)可以自動檢測你的 PDF 是文字型還是影像型。

方法 5:透過指令列(進階)

  • 在 Linux 或 macOS 上,你可以使用 pdfinfo 命令來檢查 PDF 屬性:

    pdfinfo filename.pdf
  • 這會顯示 PDF 的創建軟體、版本等信息。


有一些具體的工具,可以簡化檢查 PDF 檔案格式(文字型、影像型或混合型)的流程:


📌 桌面軟體

  1. Adobe Acrobat Pro DC(Windows/macOS)

    • 檢查方法:開啟 PDF,嘗試選取文字。如果無法選取,則為影像型 PDF。

    • 進階檢查

      • 選擇「檔案 > 屬性」檢查 PDF 檔案的製作者和格式資訊。

      • 使用「編輯 PDF」功能檢測是否需要 OCR。

  2. PDF-XChange Editor(Windows)

    • 檢查方法:開啟 PDF,嘗試選取文字。

    • 進階檢查

      • 使用「檢視 > 文件層」來查看文件結構(文字層或影像層)。

      • 支援內建 OCR 功能,可將影像型 PDF 轉為文字型 PDF。

  3. Foxit PDF Editor(Windows/macOS)

    • 檢查方法:開啟 PDF,嘗試選取文字。

    • 進階檢查

      • 「檔案 > 屬性」中查看「內容」選項。

      • 可進行 OCR,將影像型 PDF 轉為文字型 PDF。


📌 線上工具

  1. SmallPDF(https://smallpdf.com/ocr-pdf)

    • 檢測方法:上傳 PDF,進行 OCR 轉換。如果能檢測文字,那它原本是影像型 PDF。

    • 優點:無需安裝軟體,快速且支援多種格式。

  2. PDF24 Tools(https://tools.pdf24.org/)

    • 檢測方法:提供「檢查 PDF」或「OCR」功能。

    • 優點:免費使用,可快速識別 PDF 類型並轉換。

  3. Google Drive + Google Docs

    • 檢測方法:將 PDF 上傳至 Google Drive,右鍵點選「以 Google 文件開啟」。

    • 優點:如果文字可直接編輯,則是文字型 PDF。否則是影像型 PDF。


📌 開源工具(進階)

  1. PDFtk(Windows/macOS/Linux)

    • 檢測方法:使用指令列查看 PDF 元數據。

    • 進階:可分解 PDF 結構檔案檢查內容類型。

  2. Poppler(pdftotext & pdfimages,Windows/macOS/Linux)

    • 檢測方法:使用 pdftotext 來將 PDF 轉為文字檔,如果輸出為空,則是影像型 PDF。

    • 範例指令

      pdftotext yourfile.pdf -
  3. ExifTool(Windows/macOS/Linux)

    • 檢測方法:檢查 PDF 的元數據。

    • 範例指令

      exiftool yourfile.pdf

📌 建議使用情境

  • 快速檢查 PDF:使用 SmallPDF 或 PDF24 Tools(線上工具)。

  • 進階檢查並編輯 PDF:使用 Adobe Acrobat Pro 或 PDF-XChange Editor。

  • 大量 PDF 檢測與批次處理:使用 Poppler(指令列)或 ExifTool。

這些工具能讓你快速檢測 PDF 類型,你希望我幫你整理一個 PDF 格式檢查的詳細教學指南嗎?(含圖文說明)

First Post : 2025/05/16

圖表:易經64卦 匯總表

 

六十四卦可以藉由六個數字長度的二進位字元來表示。

但在各種不同的變化中,諸如錯卦、互卦、綜卦/覆卦、各式應卦的變化,會造成衆多的組合,不易記憶。

筆者特別使用 Excel 加以列表,並配合 VBA 函式的撰寫,做出此 易經64卦匯總表 供大衆參考。

後續找空,再跟大家介紹此表如何產生!







First Post : 2025/05/09










網路磁碟機的設定管理

緣起:

因有 NAS 設備在備份一些資料,所以需要藉由 電腦 環境來操作,較為方便。

但實務上,卻遇到 不知明原因 的情況,造成網路磁碟機的設定,偶爾要變更為以 User ID 來設定,或是以 名稱 來設定。

如此,操作是可以用 手動 方式處理,但較費時。

現改為 批次檔 形式處理,以增加時效!!


批次檔,內容如下:

 @Echo off

net use H: /del

' 因為已經有其他磁碟機代號,同樣是以“相同的 IP PW”來設定,所以不能再以 含 IP PW 的指令形式來設定!!

' 否則,會有錯誤:

' 不允許使用多於一個使用者名稱的相同使用者有多個連線到一個伺服器或共用資源。中斷所有之前到伺服器或共用資源的連線,然後再試。

’net use H: \\123.113.124.245\home\ /user:ID PW

net use H: \\123.113.124.245\home\


First Post : 2024/08/26

HyRead閱讀平台:圖書資訊中的“請註冊。。。所轄公共圖書館”

使用HyRead閱讀平台在選讀各類圖書資訊時,偶爾會看到“請註冊。。。所轄公共圖書館” 的提示;但心中卻又有另一個疑問產生?

例如:新竹市圖書館 個人已經可以在該館登入、借閱圖書,然不成 新竹市圖書館 與 新竹市所轄公共圖書館 不同?新竹市所轄公共圖書館是指更 local 的圖書館?要如何註冊這些圖書館?

幾次遇見這類問題後,決定要找出答案來,於是!!

在【HyRead電子書】Line 環境中,提出如下問題:

請問本人想要借閱這本書,是要註冊新竹市所轄公共圖書館嗎?它和 新竹市圖書館 不同嗎?
因為個人有註冊新竹市圖書館,不清楚他們之間的差異。


HyRead電子書】回覆如下:
您好,向您說明,國資圖的平台書籍內會有各縣市採購後放至國資圖平台,若想借閱國資圖顯示是縣市的書籍,需先綁定該館才能借閱。

請先以瀏覽器至國資圖的電子書服務平台:https://ebook.nlpi.edu.tw/
→ 登入您國資圖帳號
→ 個人書房
→ 註冊館維護
→ 新增註冊館別,如新竹市、新竹縣,綁定館別即可使用縣市採購後放在國資圖的書籍。

因國資圖平台是獨立平台與縣市各平台是完全不同的,麻煩您先綁定後
於閱讀器中 「我的」 → 先登出國資圖,
再重新登入國資圖,您詢問的書籍即可借閱,再麻煩您試看看,謝謝。

First Post : 2024/08/26

希臘文介係詞

 有關希臘文介係詞的認識,似乎可以藉由圖表及表格分類,來增加記憶喲!



First Post : 2024/06/09
#希臘文 #文法 #介係詞


 箴言經文中的離合詩(箴31:10-31)

箴31:10-31 

在希伯來文聖經中,該段經文的標題:“אשת חיל”(才德的妻子)

和合本聖經的標題:敬畏主的婦女必得稱讚

讓我們來看下,和兩個版本的經文,你可以看出個中的奧秘?



First Post : 2024/05/17
#離合詩