自制扫描文档

拍照

材料
拿裁纸刀把书页裁下来,装订好的厚书中间部分无法清晰拍摄,注意不要在桌子上裁,容易把桌子划到,尽可能找一把够坚硬的尺子

设备
三角架+相机+手机控制+一张比书本略大的纸作为背景

条件
充足的照明,可以是自然光或者近距离灯光

拍摄方式
将书整齐放在背景纸上,拍一页拿走一页,拿走的页不要翻面
拍完一面之后把书页整理好,拍另一面,一部分一部分整理,否则书页对齐不了

后期处理

双面合并
用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: &#30446;&#24405;
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: &#31532;&#49;&#31456;&#32;&#35745;&#31639;&#26426;&#31995;&#32479;&#27010;&#35770;
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle:   &#49;&#46;&#49;&#32;&#35745;&#31639;&#26426;&#30340;&#20998;&#31867;
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%,要么整体看不清,要么一块一块黑膏药,文石的去水印挺好用,不完美但已经是最好结果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章