拍照
材料
拿裁紙刀把書頁裁下來,裝訂好的厚書中間部分無法清晰拍攝,注意不要在桌子上裁,容易把桌子劃到,儘可能找一把夠堅硬的尺子
設備
三角架+相機+手機控制+一張比書本略大的紙作爲背景
條件
充足的照明,可以是自然光或者近距離燈光
拍攝方式
將書整齊放在背景紙上,拍一頁拿走一頁,拿走的頁不要翻面
拍完一面之後把書頁整理好,拍另一面,一部分一部分整理,否則書頁對齊不了
後期處理
雙面合併
用shell處理,奇數面從1開始,偶數面從2開始,每次加2,按順序重新命名
圖片壓縮
imagemagick(convert)
相機拍出來比較大,需要適當壓縮,加上自動白平衡
convert odd/$file -rotate -90 -resize “999x1333” -auto-level $filename
轉成分片pdf
用convert需要一部分一部分轉,否則內存會暴
convert *.jpg output.pdf
合併pdf
pdftk 1.pdf 2.pdf 3.pdf cat out out.pdf
製作書籤
導出原有pdf信息至info文件
pdftk out.pdf dump_data output info
編輯書籤文件
級別 標題 頁碼
1|第1章 計算機系統概論|1
2|1.1 計算機的分類|1
2|1.2 計算機的發展簡史|2
書籤標題轉碼
function make_title() {
echo -n "$1" |iconv -t unicode|od -x -d | grep -E '\<[0-9]{5}\>' |\
awk -F"[ \n]" -v RS="\n\n" '
{out_str="";
for (i=1;i<=NF;i++) {
if ($i != "" && $i != "65279") {
#print $i
out_str=out_str"&#"$i";"
}
}
print out_str
}'
}
生成pdf信息格式
function read_table() {
while IFS="|" read -r level title i; do
book_title=$(make_title "$title")
# 頁碼對齊
((i=i+4))
echo "BookmarkBegin"
printf "BookmarkTitle: %s\n" $book_title
printf "BookmarkLevel: %s\n" $level
printf "BookmarkPageNumber: %d\n" $i
done < $1
}
生成的信息合併到原pdf信息文件info當中
BookmarkBegin
BookmarkTitle: 目录
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: 第1章 计算机系统概论
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle: 1.1 计算机的分类
BookmarkLevel: 2
BookmarkPageNumber: 5
生成最終文檔final.pdf
pdftk out.pdf update_info info output final.pdf
踩的坑
imagemagick策略文件
/etc/ImageMagick-6/policy.xml
默認不支持讀寫pdf
生成pdf過程中會報錯,聲稱緩存不足(有點懞,大致是這幾行,我都改了)
<policy domain="resource" name="memory" value="2GB"/>
<policy domain="resource" name="map" value="2GB"/>
<policy domain="resource" name="area" value="2GB"/>
<policy domain="resource" name="disk" value="3GB"/>
調整圖像質量
1、空白部分亮度不足,嘗試了-sigmoidal-contrast參數,連字體一起變談了,最後用的-auto-level自動調整的白平衡
2、想製作掃描儀效果,嘗試了生成灰度圖像-colorspace Gray,背景也是灰的,嘗試了二值化-threshold 40%-70%,要麼整體看不清,要麼一塊一塊黑膏藥,文石的去水印挺好用,不完美但已經是最好結果