本帖最后由 SailZhao520 于 2023-3-9 13:38 编辑
可以用OCR识别,如果只包含文字层的话,那就是电子版,如果没有文字层,那就是扫描版
下面是代码参考,可以下个Tesseract-OCR +python 实现
[Python] 纯文本查看 复制代码 import os
import PyPDF2
import subprocess
# 设置OCR软件的路径
ocr_path = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
# 遍历目录中的所有PDF文件
for root, dirs, files in os.walk('path_to_pdf_folder'):
for file in files:
if file.endswith('.pdf'):
pdf_path = os.path.join(root, file)
with open(pdf_path, 'rb') as f:
pdf_reader = PyPDF2.PdfFileReader(f)
# 如果PDF文件没有文字层,则运行OCR识别
if not pdf_reader.isEncrypted and not pdf_reader.getNumPages() == 0 and not pdf_reader.getDocumentInfo().get('/Creator') == 'ScanSnap Manager 6.5':
text = ''
for page_num in range(pdf_reader.getNumPages()):
page = pdf_reader.getPage(page_num)
text += page.extractText()
# 运行OCR识别
process = subprocess.Popen([ocr_path, pdf_path, 'stdout'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, err = process.communicate()
# 如果OCR识别结果为空,则说明PDF文件不可识别
if not out:
print(pdf_path, '是扫描版')
else:
print(pdf_path, '是电子版')
else:
print(pdf_path, '是电子版')
|