• 【办公类-41-01】20240312 每篇pdf文献有多少字(pdf转TXT 求字数)


    作品展示——查询文献字数

    背景需求:

    领导:把这份里面的所有文献下载后,查看每篇有多少字

    打开www.caj11.com(买了终身会员)查询并下载

    输入文献名称

    点击下载

    这是所有下载后的文件(14个PDF和1个CAJ)

    需要查询每篇里面的文字数量

    使用AI对话大师,获得代码并反复调试,结果发现

    1、无法直接读取PDF和caj的文字数量

    2、可以通过pdf转txt,获取txt的文字数量。

    3、无法将caj转TXT。

    一、PDF转docx

    测试1-1:将PDF和caj转成docx

    1. '''
    2. pdf转docx
    3. 作者:AI对话大师、阿夏
    4. 时间:2024年3月11日
    5. '''
    6. import os
    7. from pdf2docx import Converter
    8. def convert_to_docx(folder_path, extensions):
    9. for root, dirs, files in os.walk(folder_path):
    10. for file in files:
    11. file_extension = os.path.splitext(file)[1]
    12. if file_extension.lower() in extensions:
    13. file_path = os.path.join(root, file)
    14. output_path = os.path.splitext(file_path)[0] + '.docx'
    15. if file_extension.lower() == '.pdf':
    16. cv = Converter(file_path)
    17. cv.convert(output_path)
    18. cv.close()
    19. folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
    20. extensions = ['.pdf', '.caj']
    21. convert_to_docx(folder_path, extensions)

    CAJ转不了docx

    测试1-2:将docx文字数量查询

    1. '''
    2. pdf转docx docx有多少字
    3. 作者:AI对话大师、阿夏
    4. 时间:2024年3月11日
    5. '''
    6. # 检测docx有多少字
    7. from docx import Document
    8. import os
    9. folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
    10. for file_name in os.listdir(folder_path):
    11. if file_name.endswith(".docx"):
    12. docx_path = os.path.join(folder_path, file_name)
    13. doc = Document(docx_path)
    14. total_characters = 0
    15. for paragraph in doc.paragraphs:
    16. total_characters += len(paragraph.text)
    17. print(f"File: {file_name}, Total Characters: {total_characters}")

    其实两者字数也有一定差异。

    二、PDF转txt

    测试2.1 pdf转txt

    1. '''
    2. pdf转成txt后查看每篇文字数量
    3. 作者:AI对话大师、阿夏
    4. 作者:2024年3月11日
    5. '''
    6. print('------1、pdf转 txt------------')
    7. import os
    8. import fitz
    9. # 定义输入和输出文件夹路径
    10. input_folder = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
    11. output_folder = input_folder
    12. # 获取输入文件夹中的所有PDF文件
    13. pdf_files = [f for f in os.listdir(input_folder) if f.endswith(".pdf")]
    14. # 遍历文件列表
    15. for pdf_file in pdf_files:
    16. # 打开PDF文件
    17. pdf_path = os.path.join(input_folder, pdf_file)
    18. pdf_document = fitz.open(pdf_path)
    19. # 逐页读取文本内容
    20. text = ""
    21. for page_num in range(pdf_document.page_count):
    22. page = pdf_document[page_num]
    23. text += page.get_text()
    24. # 构建输出文件路径
    25. output_file = os.path.join(output_folder, pdf_file.replace(".pdf", ".txt"))
    26. # 将文本内容写入输出文件
    27. with open(output_file, 'w', encoding='utf-8') as f:
    28. f.write(text)
    29. pdf_document.close()
    30. print("PDF文件已成功转换为TXT文件。")

    测试2.1 txt查询文字数量

    1. '''
    2. # pdf转成txt后查看每篇文字数量2
    3. # 作者:AI对话大师、阿夏
    4. # 作者:2024年3月11日
    5. '''
    6. print('-----2、txt的字数------------')
    7. import os
    8. def count_text_characters(file_path, encoding):
    9. with open(file_path, 'r', encoding=encoding, errors='ignore') as file:
    10. text = file.read()
    11. return len(text)
    12. # 遍历文件夹下的所有txt文件
    13. folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
    14. for file_name in os.listdir(folder_path):
    15. file_path = os.path.join(folder_path, file_name)
    16. if os.path.isfile(file_path) and file_path.endswith('.txt'):
    17. try:
    18. characters = count_text_characters(file_path, 'utf-8')
    19. except UnicodeDecodeError:
    20. characters = count_text_characters(file_path, 'utf-16')
    21. print(f"文件: {file_name},文字数量: {characters}")

    感觉TXT字数也不是一模一样的数字。只是一个大致的字数范围。

    最后发给领导统计结果——字数在8000-22000之间,平均是15000字

    不过我对这个字符结果也存在疑问。

  • 相关阅读:
    Spring 事务
    5G学习笔记之5G频谱
    deepin(深度)系统下qt5.12.0的程序打包发布给其他linux机器使用
    微信小程序通过官方内置函数实现WebSocket
    Hive SQL ——窗口函数源码阅读
    SpringIoc依赖查找-5
    RP原型资源分享-购物类App
    工业信息物理系统攻击检测增强模型
    栈与队列--逆波兰表达式求值
    传输层——UDP协议、TCP协议
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/136641165