2018年3月2日 星期五

Linux(Ubuntu)中從實體書(pdf)製作電子書及txt文件合併

友人掃描了實體書(雙頁掃描)要製成電子書,我從網路上搜集了資料,最後列出了各個步驟,紀錄下來,以便日後參考:

一、建book資料夾→將掃描檔剪下貼到book中→檔名改為a-all.pdf
 
二.pdf裁切出上、下頁輸出為ppm(需測試)
 [大本書]
(1)上頁: pdftoppm  -x 60 -y 50 -W 1060 -H 710 a-all.pdf up
★建目錄 up 存所有up檔
(2)下頁: pdftoppm -x 60 -y 850 -W 1060 -H 730 a-all.pdf dn
※※※※※※※※※
  [小本書]
(1)上頁: pdftoppm -x 260 -y 150 -W 2000 -H 1500 a-all.pdf up
★建目錄 up 存所有up檔
(2)下頁: pdftoppm -x 230 -y 1920 -W 2060 -H 1500 a-all.pdf dn
【註】若加入 -jpeg 條件則會輸出jpeg圖,但輸出時間較長,檔案較大。
★★xxx

※※※※※※※※※

★若要輸出PNG檔

  則:pdftoppm -png -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

★若要輸出jpeg檔

  則:pdftoppm -jpeg -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

★一般內定解析度為150,若要指定解析度(如300DPI)用-r係數

  則:pdftoppm -r 300 -x 60 -y 50 -W 1060 -H 710 a-all.pdf up

 
三.改檔名,以便合併pdf時,依頁數順序合併:
(1)到up中:(合併時,1-1.ppm在1.ppm之前)
rename -v s/.ppm/-1.ppm/ *
(即在原檔名後加上 -1,合併時順序會在前面)
若橫式書本,左右頁相反,則改dn的檔名
=============
(2)在up中
rename -v s/up/dn/ *(改為檔名都是dn開頭)

★★xxx
四.Copy dn中檔案至up中,並將原a-all.pdf留下,以便合併

★★xxx
五.在up中,合併
(1)每個pdf檔60頁,傳到Google硬碟辨識用
convert dn-00*.ppm dn-01*.ppm dn-02*.ppm dn-03*.ppm dn-04*.ppm a-0004.pdf

convert dn-05*.ppm dn-06*.ppm dn-07*.ppm dn-08*.ppm dn-09*.ppm a-0509.pdf


【註】2022/12/07此轉換已失效,需執行以下2行,才能使用:
(1)
$ sudo nano /etc/ImageMagick-6/policy.xml  (或從檔案找etc)
(2)找到<policy domain="coder" rights="none" pattern="PDF" />改為<policy domain="coder" rights="read|write" pattern="PDF" />

【註】形成pdf後要打開來看看頁數是否符合
【註】辨識:在Google硬碟→右鍵→以Google文件開啟→辨識完,全選copy到純文字文件軟體
==============

(2)在up中,壓縮後(作單頁辨識用
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=a-0004new.pdf a-0004.pdf
(所得的單頁pdf比原檔小很多)
【註】形成pdf後要打開來看看總頁數是否符合

(注意:轉換成的 Google 文件,大小上限則是 50 MB。)
=============
(3)在up中,合併為全檔(作單頁校稿用
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=a-allnew.pdf a-*.pdf
(所得的單頁pdf比原檔小很多)
【註】形成pdf後要打開來看看總頁數是否符合

★★xxx
六.將辨識好的書本文字檔進行閱讀校正,貼到電子書製作軟體中,製成電子書。
七.將電子書丟入平板中以電子書閱讀軟體閱讀;檔案小又方便。

★★★★★

八.若辨識出來的文字檔有許多個,可以用以下的命令將它們合併為一個文字檔

 cat 01.txt 02.txt.... > all.txt

cat *.txt > all.txt   (要先將1~9的檔名前加上0,否則順序會錯誤)

沒有留言:

張貼留言