[英]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.