作品展示------查询文献字数
背景需求:
领导:把这份里面的所有文献下载后,查看每篇有多少字
打开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}")