使用pdfminer提取PDF文本时,空文本长度非0的判断问题求助
如何修正PDFMiner提取文本后的空内容判断逻辑?
问题场景
使用PDFMiner读取文本版和扫描版PDF时,扫描版PDF提取出的文本看似为空,但len(text)!=0,导致原有的len(text)==0判断无法触发OCR处理函数extract_ocr。
解决方案
方法1:去除首尾空白后判断长度
对提取的文本先过滤首尾的空白字符(包括换行、空格、制表符等),再判断处理后的字符串长度:
text = output_string.getvalue() # 去除字符串首尾的所有空白字符 cleaned_text = text.strip() if len(cleaned_text) == 0: extract_ocr(pdf_directory, file_name, text_directory)
strip()会过滤掉字符串首尾的各类空白,若处理后长度为0,说明原文本仅包含空白内容,判定为扫描版PDF并触发OCR。
方法2:检查是否全为空白字符
利用str.isspace()方法直接判断文本是否全部由空白字符组成,同时兼容真正的空字符串场景:
text = output_string.getvalue() # 覆盖空字符串和全空白字符串两种情况 if not text or text.isspace(): extract_ocr(pdf_directory, file_name, text_directory)
not text处理完全为空的字符串,text.isspace()处理由纯空白字符构成的字符串,两者结合可准确识别“无有效文本”的情况。
原因说明
PDFMiner处理扫描版PDF时,可能会将页面的空白区域解析为换行、空格等空白字符,这些字符会让len(text)不为0,但实际没有可读取的有效文本,因此原有的空长度判断失效。
内容的提问来源于stack exchange,提问作者dsnoob27
相关产品推荐
相关产品推荐

