我有一个任务,在那里,我必须提取文本,是背后的图像,并已从图像本身OCR编辑。这一案文是透明的。问题是,有一个图像,它的背后有文字,不是OCR编辑的,它只是正常的文本,它是不透明的。如何区分所需(透明)和不需要(不透明)文本?
这是一个具有代表性的pdf文件:https://easyupload.io/rbo333图像OCR文本应该在第2页、第3页、第12页上提取,而文本也在第4页上提取。在第4页,图像后面没有OCR文本,但是图像下面有规则文本。我需要过滤掉它,因为我只需要OCR文本。
发布于 2021-07-20 06:43:24
所以图片在他们前面或者后面都是透明的文字。我认为这意味着它们没有颜色,但是@mkl说它们可能有颜色,但它们是空的符号。pdf规范还指出,即使它们是透明的,它们也可以有颜色。要做到真正的透明,字符就需要渲染,而不是抚摸,也不是抚摸颜色。
在RenderingMode枚举中有一个用于此目的的Fontbox,它的既不表示某物是否透明,也不表示它是否透明。我可以在这个answer的帮助下提取它。
解决方案代码如下所示。
@Override
protected void processTextPosition(TextPosition character) {
characterRenderingModes.put(character, getGraphicsState().getTextState().getRenderingMode());
super.processTextPosition(character);
}这是PDFTextStripper类的重写方法,它遍历页面/s上的每个字符并获取它们的RenderingModes。在此之后,当需要时,我根据需要检查的字符将RenderingModes从地图中提取出来。
https://stackoverflow.com/questions/68361447
复制相似问题