簡體   English   中英

PDFBox:區分透明和非透明文本

[英]PDFBox: Differentiating between transparent and non-transparent text

我有一項任務,我必須提取圖像背后的文本,並從圖像本身進行 OCR 處理。 這段文字是透明的。 問題是有一個圖像后面有沒有經過 OCR 處理的文本,它只是普通文本並且不透明。 如何區分需要(透明)和不需要(非透明)的文本?

這是一個代表性的pdf文件: https : //easyupload.io/rbo333圖像OCR文本應該在第2、3、12頁提取,但文本也在第4頁提取。在第4頁圖像后面沒有OCR文本,但是圖像下方有常規文本。 我需要以某種方式過濾掉它,因為我只需要 OCR 文本。

因此,圖像的前面或后面都有透明文本。 我認為這意味着它們沒有顏色,但@mkl 說它們可能有顏色,但它們是空字形。 pdf 規范還指出,即使它們是透明的,它們也可以具有顏色。 為了真正透明,字符需要既沒有描邊也沒有描邊顏色。

有一個在PDFBox的,或Fontbox一個RenderingMode枚舉出於這樣的目的和它既不值表示的東西是否是透明的。 我可以在這個答案的幫助下提取它。

解決方案代碼如下所示。

@Override
protected void processTextPosition(TextPosition character) {
    characterRenderingModes.put(character, getGraphicsState().getTextState().getRenderingMode());
    super.processTextPosition(character);
}

這是 PDFTextStripper 類的重寫方法,它遍歷頁面上的每個字符並獲取它們的 RenderingModes。 之后,在需要時,我根據需要檢查的字符從地圖中獲取 RenderingModes。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM