【办公类-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

python 复制代码
'''
pdf转docx
作者:AI对话大师、阿夏
时间:2024年3月11日
'''

import os
from pdf2docx import Converter

def convert_to_docx(folder_path, extensions):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_extension = os.path.splitext(file)[1]

            if file_extension.lower() in extensions:
                file_path = os.path.join(root, file)
                output_path = os.path.splitext(file_path)[0] + '.docx'

                if file_extension.lower() == '.pdf':
                    cv = Converter(file_path)
                    cv.convert(output_path)
                    cv.close()


folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
extensions = ['.pdf', '.caj']
convert_to_docx(folder_path, extensions)

CAJ转不了docx

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

python 复制代码
'''
pdf转docx docx有多少字
作者:AI对话大师、阿夏
时间:2024年3月11日
'''
# 检测docx有多少字
from docx import Document
import os

folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'

for file_name in os.listdir(folder_path):
    if file_name.endswith(".docx"):
        docx_path = os.path.join(folder_path, file_name)
        doc = Document(docx_path)
        total_characters = 0
        for paragraph in doc.paragraphs:
            total_characters += len(paragraph.text)
        print(f"File: {file_name}, Total Characters: {total_characters}")

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

二、PDF转txt

测试2.1 pdf转txt

python 复制代码
'''
pdf转成txt后查看每篇文字数量
作者:AI对话大师、阿夏
作者:2024年3月11日
'''

print('------1、pdf转 txt------------')
import os
import fitz

# 定义输入和输出文件夹路径
input_folder = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
output_folder = input_folder

# 获取输入文件夹中的所有PDF文件
pdf_files = [f for f in os.listdir(input_folder) if f.endswith(".pdf")]

# 遍历文件列表
for pdf_file in pdf_files:
    # 打开PDF文件
    pdf_path = os.path.join(input_folder, pdf_file)
    pdf_document = fitz.open(pdf_path)
    
    # 逐页读取文本内容
    text = ""
    for page_num in range(pdf_document.page_count):
        page = pdf_document[page_num]
        text += page.get_text()
    
    # 构建输出文件路径
    output_file = os.path.join(output_folder, pdf_file.replace(".pdf", ".txt"))
    
    # 将文本内容写入输出文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(text)
    
    pdf_document.close()

print("PDF文件已成功转换为TXT文件。")

测试2.1 txt查询文字数量

python 复制代码
'''
# pdf转成txt后查看每篇文字数量2
# 作者:AI对话大师、阿夏
# 作者:2024年3月11日
'''
print('-----2、txt的字数------------')
import os

def count_text_characters(file_path, encoding):
    with open(file_path, 'r', encoding=encoding, errors='ignore') as file:
        text = file.read()
        return len(text)

# 遍历文件夹下的所有txt文件
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\下载文献'
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)
    if os.path.isfile(file_path) and file_path.endswith('.txt'):
        try:
            characters = count_text_characters(file_path, 'utf-8')
        except UnicodeDecodeError:
            characters = count_text_characters(file_path, 'utf-16')
        print(f"文件: {file_name},文字数量: {characters}")

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

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

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

相关推荐
q5673152327 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
是萝卜干呀28 分钟前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
代码欢乐豆29 分钟前
数据采集之selenium模拟登录
python·selenium·测试工具
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
Tassel_YUE1 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
聪明的墨菲特i1 小时前
Python爬虫学习
爬虫·python·学习
努力的家伙是不讨厌的2 小时前
解析json导出csv或者直接入库
开发语言·python·json
云空2 小时前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
凤枭香3 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
测试杂货铺3 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展