半自动化给PDF加书签-Python实现-可双击执行-上篇
文章目錄
- 半自動化給PDF加書簽-Python實現-上篇
- 一、PDF加書簽介紹
- 1.1 不那么漂亮的話
- 1.2 PDF加書簽難點
- 1.2.1 書簽獲取
- 1.2.2 書簽格式化
- 1.3 工具使用限制
- 二、使用方式
- 2.1 工具介紹
- 2.2 半個圖形化界面---可雙擊執行
- 2.3 命令行
- 2.4 下載鏈接
- 三、代碼實現
- 四、TODO
半自動化給PDF加書簽-Python實現-上篇
一、PDF加書簽介紹
1.1 不那么漂亮的話
1.2 PDF加書簽難點
1.2.1 書簽獲取
一般需要加書簽的,大多是掃描版書籍,而市面上絕大多數掃描版書籍均出自超星公司(讀秀和全國圖書參考聯盟都是他家的),為了方便學術檢索,超星有對目錄進行提取,如下圖。
? 額,然后有人分析出了超星書簽的接口,做成了書簽獲取工具,如下圖,通過它能獲取大多數書的書簽。
但檢索一本書的書簽,需要知道書在超星的內部編號,上圖書簽獲取工具填的就是那個編號
-
SSID( Super Star ID,超星英文簡寫)
書簽接口是超星開發的,其中檢索每本書的書簽不是通過ISBN或書名,而是其內部定義的編號SSID,這個SSID可以油猴腳本獲取,推薦文獻互助小幫手這個腳本,讀秀和全國圖書參考聯盟都可以獲取SSID,但在裝油猴腳本前需要裝油猴插件
裝好的油猴插件、油猴腳本
如果書簽工具也沒有那本書的書簽,怎么辦?
- 這篇博客 下載超星或讀秀圖書時,怎么搞定完整書簽? 講的可以,不重復了,主要是在各出版社官網,電商網站,豆瓣找,直接Google書簽里面的內容,層級深一點的那個,實在沒有就OCR書里面的目錄部分再整理
推薦閱讀,上面的內容主要參考這三篇文章
- 文獻互助小幫手:https://greasyfork.org/zh-CN/scripts/435569-%E6%96%87%E7%8C%AE%E4%BA%92%E5%8A%A9%E5%B0%8F%E5%B8%AE%E6%89%8B-%E4%BB%8E%E5%9B%BE%E4%B9%A6%E9%A6%86%E5%8F%82%E8%80%83%E5%92%A8%E8%AF%A2%E8%81%94%E7%9B%9F-ucdrs-%E6%88%96%E8%AF%BB%E7%A7%80-duxiu-%E8%8E%B7%E5%8F%96ssid-dxid-%E4%BB%8E%E4%B8%AD%E7%BE%8E%E7%99%BE%E4%B8%87-cadal-%E8%8E%B7%E5%8F%96ssno-%E6%8F%90%E4%BE%9Bucdrs-duxiu-cadal%E5%88%B0%E8%B1%86%E7%93%A3%E5%9B%BE%E4%B9%A6%E7%9A%84%E9%93%BE%E6%8E%A5
- 淘寶書商為啥什么書都能找到:揭秘代找PDF背后的真相 :https://mp.weixin.qq.com/s/7SX-Oztgx2q76AN5YpntTA
- 下載超星或讀秀圖書時,怎么搞定完整書簽? :https://blog.csdn.net/youthlzu/article/details/24514703
1.2.2 書簽格式化
? ==最初獲取的書簽結構化程度,很大程度決定了后期格式化用的時間。==根據經驗,書簽格式化有三個小點,書簽層級、每級書簽樣式和頁碼偏移。
-
書簽層級
? 以《人工智能在信用債投資領域的應用 Python語言實踐》(SSID: 14545152)這本書為例,見下圖,這是從書簽獲取小工具2015.05.05【晴天軟件】獲得的初步整理的書簽。另外規定對于書簽的層級一律以Tab來區分,一級書簽前面沒有Tab,二級書簽前面有1個Tab,三級書簽則有2個Tab
? 從中可以看出,除對一級書簽(即按章開頭的那個第*章),其它書簽均格式化為二級書簽,其中標注的第6行和第31行應分別為三級書簽和一級書簽,如下圖為修正好的書簽
-
每級書簽樣式
? 還是以同一本書為例看書簽樣式問題,注意第4行,第2章 機器學習,標號與標題中間有兩個空格;第6行,2.1.1有監督機器學習,標號與標題中間則沒有空格;第11行,第3章 基于TensorFlow用Keras做深度學習,里面的英文單詞是應該首字母大寫還是按原樣輸出,后面的附錄那節同第一個問題。
? 這個按照每個人的審美不同,具體怎么弄,得看你們自己的選擇
? 個人的審美是,標號與標題之間只留一個空格,英文單詞全部統一成小寫,雖然按原樣輸出就挺不錯的,但加了這么多PDF的書簽,最終還是選擇統一單詞的風格,結果如下圖
-
頁碼偏移
? 超星的書簽應該也是從目錄這部分OCR提取的,見下圖,但其中的頁碼和實際的頁碼有偏移(因為目錄里面的頁碼是從正文開始算的,而實際的書簽引用頁碼必須是從第一開始的絕對頁碼),第二章在目錄里是頁碼是6,而實際絕對頁碼是16,二者相差10,加書簽時必須補上這個頁碼,見第二張圖。
? 所有正文之后的頁碼必須+10進行修正,如下圖
1.3 工具使用限制
? 在最開始已經介紹,本工具只能進行書簽部分格式化,還有一部分是需要手工操作的,特別是對于從非書簽獲取小工具2015.05.05【晴天軟件】獲得的書簽,程序處理會有很大問題,,,
-
從書簽獲取小工具2015.05.05【晴天軟件】獲取書簽
? 如下圖紅框,書簽層級是通過數字標號來定位的,但如下圖框中,書簽部分前面沒有標號,所以沒辦法分層級。**最后的處理辦法是對所有不能通過其特定標識分層級的,全部默認分到二級書簽。**之后就得自己去修正正確的層級。
-
從其它處獲得的書簽
? 如下圖,一些新書是沒有錄入庫的,只能從其它地方拿書簽了。
? 下面是從京東商城的商品界面,可以看到目錄,
? 復制到TXT文檔里面,可以發現其中標簽與頁碼之間有點符號,另外還有空行,如果需要用這個書簽的話,這個需要把里面的點符號還有空行刪了,這個需要用到正則表達式進行替換,不過注意別把書簽的數字標號之間的點刪除了。
? 試著把這個txt格式化一下,如圖,箭頭所指的點沒刪除,后面有時間再優化這個問題了。
二、使用方式
2.1 工具介紹
工具結構
#目錄樹 . ├── Config │ └── config.yaml #配置文件 ├── Notepad3 │ ├── Notepad3.exe #協同工具-文本編輯器 │ ├── Notepad3.ini │ └── lng │ ├── np3lng.dll │ └── zh-CN │ └── np3lng.dll.mui ├── format_bookmark.py #代碼-格式化書簽 ├── pdf_add_bookmark_semi.exe #代碼-打包的exe ├── pdf_add_bookmark_semi.py #代碼-加書簽 └── 書簽獲取小工具2015.05.05【晴天軟件】.exe #協同工具-書簽獲取工具主要是三部分:代碼(format_bookmark.py、pdf_add_bookmark_semi.py、pdf_add_bookmark_semi.exe)、配置文件(Config/config.yaml)、以及協同工具(Notepad3/Notepad3.exe、書簽獲取小工具2015.05.05【晴天軟件】.exe)
-
代碼
一個用來格式化書簽format_bookmark.py,另一個用來加書簽pdf_add_bookmark_semi.py,最終打包成pdf_add_bookmark_semi.exe,具體分析見第三節
主要實現功能
- 可加4級書簽
- 書簽格式化規則可自己配置
配置文件
Config/config.yaml,里面用于配置編輯器的啟用、使用哪個編輯器、首字母是否小寫、以及最重要的書簽格式化規則,具體的看配置文件吧
協同工具
協同工具一個是文本編輯器Notepad3也就是上圖所示的軟件,另一個是書簽獲取小工具2015.05.05【晴天軟件】.exe),第一節也介紹了,不過這個軟件會報毒,加了VMP的殼,這軟件我也不知道是誰寫的,,,應該沒毒吧,15年開發的,很多人也用了很久了。如果被殺軟殺了,記得加信任區。
2.2 半個圖形化界面—可雙擊執行
SS號
? 上面有介紹通過油猴腳本獲取的方式,這里再介紹一個網站:http://115.159.153.83:19777/index.html
在上面直接搜索書名,可獲得ss號。
書簽獲取
務必保存到要加書簽的pdf的那個文件夾,另外txt文件名要與pdf相同
加書簽
雙擊pdf_add_bookmark_semi.exe,會彈出控制臺界面
用法,上面也提了,要輸入書簽文件名(txt那個文件)、正文頁偏移以及目錄頁碼(這個參數可選)
直接將txt書簽文件拖到控制臺界面,然后填好頁偏移10
書簽和頁偏移之間要留空格
回車,會進行初步格式化,然后彈出書簽編輯頁面,之后進行修正
附錄那要改成一級書簽,并去掉多余空格,書簽規定看1.2.2書簽格式化那節
按上圖改完之后,記得關閉編輯器,然后到了加書簽界面,輸入y是加,n是不加書簽
輸入y,回車加書簽(記得加書簽的時候,pdf不能被其它應用使用)
按回車,退出,一切OK
加書簽的程序也能發送到桌面,創建快捷方式,直接雙擊
2.3 命令行
和上面一樣的,只是前面多了執行的解釋器和py文件
python pdf_add_bookmark_semi.py "C:\Users\acer\Desktop\Notes\安全\Blog\test\人工智 能在信用債投資領域的應用 Python語言實踐.txt" 10另外注意安裝Python模塊pikepdf、colorama
2.4 下載鏈接
Github https://github.com/Davy-Zhou/pdf_add_bookmark_semi
三、代碼實現
下次吧,寫文檔也累了
四、TODO
- 書簽獲取有點花時間,爭取下次自動化獲取
- 書簽頁碼偏移部分可自動識別
- 界面美化
- 書簽格式化規則更新
總結
以上是生活随笔為你收集整理的半自动化给PDF加书签-Python实现-可双击执行-上篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优雅的PHP采集框架QueryList
- 下一篇: websocket python爬虫_p