我正在嘗試使用 borb 從 pdf 中提取文本。一些 pdf 效果很好,但是當嘗試從一些 pdf 中提取文本時,我在所有字母和空格之間得到了額外的空格。看起來像:
I N B E T A L N I N G / G I R E R I N G A V
如果我計算空格并注意到比平時多,我可以使用正則運算式以某種方式在任何地方洗掉一個空格嗎?所以它看起來像:
INBETALNING / GIRERING AV
uj5u.com熱心網友回復:
免責宣告:我是作者borb
pdf 檔案并不真正包含文本。它包含 Adob??e Reader 等程式將執行的渲染指令。這些指令會產生一些人類可能會解釋為文本的東西。
例如:
- 轉到位置 30, 50
- 使用字體 Helvetica
- 將顏色設定為黑色
- 渲染字符“你好”
- 移動到 36、50
- 渲染字符“世界”
您會注意到“Hello World”中的空格并沒有在渲染說明中明確顯示。它可能是。但沒必要。許多 pdf 創建工具選擇不插入空格,而是移動繪圖游標。
現在這對于文本提取意味著軟體borb必須猜測何時插入空格。
它可以判斷兩個字符的邊界框相距多遠。
當然,如果渲染指令中沒有使用空格字符,它可能不會包含在字體資訊中。這稱為字體子集。創建專用字體的位置,僅包含實際使用的字符。
發生這種情況時,borb不知道空格字符應該有多寬。
borb將嘗試不同的啟發式方法:
- 檢查字體是否為等寬字體
- 檢查是否定義了足夠多的其他字符(例如“空格是字符“i”的兩倍寬)
- 恢復為默認值
如果您查看代碼,SimpleTextExtraction您將能夠看到這個邏輯在起作用。
我建議您對該類進行子類化,并對其進行修改以允許您(用戶)定義可接受的空格字符寬度。
特別看看這條線。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/473757.html
