纠错帮【python文稿AI纠错工具】,由论坛大神制作的一个论文纠错工具,由Python语言编写,可以检查出文档内的语句,错字内容,选择好文件导入后就可以一键进行检测,能有效检查出一些基础错误,提高文章的准确率。本次放出大神制作的这个纠错帮小程序工具下载。

选择文件并加载
点击开始检测一键查询
查询结束后会显示错误点并自动纠正
import PySimpleGUI as sg
from aip import AipNlp
from docx import Document
from docx.shared import RGBColor
import os
import pickle
import random
import time
class TextAIAnalyse(object):
"""
:param
"""
def __init__(self, doc_path, app_id, api_key, secret_key):
"""
:param doc_path:文章路径
:param app_id: 应用id,自己去百度ai控制台构建一个应用,就会有id了
:param api_key:
:param secret_key:
"""
self.client = AipNlp(app_id, api_key, secret_key)
self.document = Document(doc_path)
self.doc_path = doc_path
text_list1 = self.filter_style()
self.text_list2 = self.filter_short_text(text_list1, 12)
def filter_style(self):
"""
样式过滤
:param
"""
delete_style = ['Title', 'Heading 1', 'Quote'] # 去除标题,一级标题,图表链接
list1 = [x.text for x in self.document.paragraphs if x.style.name not in delete_style]
return list1
@staticmethod
def filter_short_text(list1: list, length: int):
"""
去除短文本
:param list1: 列表格式的文本集
:param length:最短文本长度
"""
list2 = [x.strip() for x in list1] # 去除两边空格
list3 = [x for x in list2 if len(x) > length]
return list3
def split_text(self, list1: list):
"""
对段落进行分句,粗糙分词
:param
"""
list2 = []
for x in list1:
x_list1 = x.split('。') # 以句号进行分词,分号暂时不考虑
for xx in x_list1:
if xx[-1:] not in ['。', ';', ':']: # 如果本局不是以句号结尾,则给它加上句号
xx += '。'
list2.append(xx)
list3 = self.filter_short_text(list2, 10)
return list3
def split_text2(self, list1: list):
"""
对段落进行分句,加上分号
:param
"""
list2 = []
for x in list1:
x_list1 = x.split('。') # 以句号进行分词
for xx in x_list1:
x_list2 = xx.split(';') # 以中文分号进行分词
for xxx in x_list2:
if xxx[-1:] not in ['。', ';', ':']: # 如果本局不是以句号结尾,则给它加上句号
xxx += '。'
list2.append(xxx)
list3 = self.filter_short_text(list2, 10)
return list3
def ai_analyse(self, text1):
"""
AI对句子进行纠错
:param
"""
result1 = None
try:
result1 = self.client.ecnet(text1)
except Exception as err:
return False
vet = result1['item']['vec_fragment'] # 可替换词
score = result1['item']['score'] # 评分
if len(vet) == 0:
return False # 没有错误
# elif score > 0.5: # 如果可信度
else:
return result1 # 返回分析
def save_analyse(self, result):
"""
:param
"""
text = result['text']
text_encode = text.encode('gbk')
vet_list = result['item']['vec_fragment']
""" 开始写入word """
basename = os.path.basename(self.doc_path)
path = './分析结果/{}.docx'.format(basename[:6])
dir_name = './分析结果'
if not os.path.exists(dir_name): # 如果文件夹不存在
os.mkdir(dir_name)
a = vet_list[0]['begin_pos'] # 获取第一个错误标签的开始位置
b = vet_list[-1]['end_pos'] # 获取最后一个错误的结束位置
if not os.path.exists(path): # 如果文件不存在
doc = Document()
else:
doc = Document(path)
doc.add_paragraph('错误写法', style='heading 1') # 一级标题
p = doc.add_paragraph() # 创建一个空段落
p.add_run(text_encode[:a].decode('gbk')) # 写入没有错误的部分
start_list = [x['begin_pos'] for x in vet_list] # 记录开始的位置
end_list = [x['end_pos'] for x in vet_list] # 记录结束的位置
if len(vet_list) == 1: # 如果只有一个错误
run1 = p.add_run(text_encode[start_list[0]:end_list[0]].decode('gbk'))
run1.font.color.rgb = RGBColor(255, 0, 0) # 设置红色字体
else: # 如果有多个错误
for i in range(len(vet_list)):
run = p.add_run(text_encode[start_list:end_list[i]].decode('gbk'))
run.font.color.rgb = RGBColor(255, 0, 0) # 设置红色字体
if i < len(vet_list) - 1 and start_list[i + 1] - end_list[i] > 1: # 如果后面一处错误与前面一处错误存在间距
p.add_run(text_encode[end_list:start_list[i + 1]].decode('gbk')) # 增加一个没有样式的普通字体
if len(text_encode) - b > 1: # 如果最后一个错误后面存在正确的内容
p.add_run(text_encode[b:].decode('gbk')) # 写入后面无错的内容
doc.add_paragraph('正确写法', style='heading 1') # 一级标题
correct = result['item']['correct_query'] # 正确的内容
doc.add_paragraph(correct) # 写入正确的内容
doc.save(path)
if __name__ == '__main__':
my_font = 'Deja_Vu_Sans_Mono.ttf'
my_font_style1 = (my_font, 11, "normal")
# 菜单栏
menu_def = [
['&菜单', ['使用说明', '更新记录']],
['&文件', ['载入配置', '保存配置']]
]
# 布局栏
layout1 = [
[sg.Menu(menu_def, tearoff=True)],
[sg.Text('APP_ID:', size=(12, None)), sg.Input(key='app_id')],
[sg.Text('API_KEY', size=(12, None)), sg.Input(key='api_key')],
[sg.Text('SECRET_KEY', size=(12, None)), sg.Input(key='secret_key')],
[sg.Text('文件位置'), sg.Input(key='file_name', size=(51, None))],
[sg.FileBrowse('选择文件', target='file_name'), sg.Button('开始检测'),
sg.CBox('中文分号分句', default=False, key='split_type'), sg.Button('退出')]
]
# 窗口栏
windows1 = sg.Window('纠错帮V1.1', layout=layout1, font=my_font_style1)
for i in range(10):
event1, value1 = windows1.read()
if event1 in ('退出', None):
break
elif event1 == '使用说明':
sg.popup('1.搜索百度AI开放平台', '2.点击控制台,注册并登录', '3.选择自然语音处理', '4.创建应用',
'5.填写appid, api_key, secret_key', '6.选择需要纠错的文件', '7.点击开始检测', title='使用说明',
font=my_font_style1)
elif event1 == '更新记录':
sg.popup(
'V1.1更新记录'
'1.增加了分号分句功能',
'2.增加了导出word对比功能',
title='提示', font=my_font_style1)
elif event1 == '保存配置':
APP_ID = windows1['app_id'].get()
API_KEY = windows1['api_key'].get()
SECRET_KEY = windows1['secret_key'].get()
file_path = windows1['file_name'].get()
split_type = windows1['split_type'].get()
if len(APP_ID) > 3 and len(API_KEY) > 5 and len(SECRET_KEY) > 5:
dict1 = {
'app_id': APP_ID,
'api_key': API_KEY,
'secret_key': SECRET_KEY,
'split_type': split_type
}
with open('info.pkl', 'wb') as f:
pickle.dump(dict1, f)
sg.popup('保存完毕', '已经生成一个info.pkl文件到本地', title='提示', auto_close=True,
auto_close_duration=3, font=my_font_style1)
else:
sg.popup('请检查你的api相关信息是否填写完成', title='错误提示', font=my_font_style1)
elif event1 == '载入配置':
if not os.path.exists('info.pkl'):
sg.popup('没有找到你的配置文件info.pkl', '请检查你的文件是否在当前路径', title='错误提示',
font=my_font_style1)
else:
with open('info.pkl', 'rb') as f:
dict2 = pickle.load(f)
windows1['app_id'].update(dict2['app_id'])
windows1['api_key'].update(dict2['api_key'])
windows1['secret_key'].update(dict2['secret_key'])
windows1['split_type'].update(dict2['split_type'])
sg.popup('配置文件载入完毕', title='提示', auto_close_duration=3, auto_close=True, font=my_font_style1)
elif event1 == '开始检测':
APP_ID = windows1['app_id'].get()
API_KEY = windows1['api_key'].get()
SECRET_KEY = windows1['secret_key'].get()
file_path = windows1['file_name'].get()
split_type = windows1['split_type'].get()
if len(APP_ID) > 3 and len(API_KEY) > 5 and len(SECRET_KEY) > 5:
doc = TextAIAnalyse(file_path, APP_ID, API_KEY, SECRET_KEY)
text_list2 = doc.text_list2
if split_type: # 如果选择的True,也就是支持分号
text_list3 = doc.split_text(text_list2)
else:
text_list3 = doc.split_text2(text_list2)
sg.popup('开始检测,共有{}句'.format(len(text_list3)),
'预计用时{}秒'.format(len(text_list3)*2), auto_close_duration=5, auto_close=True)
layout2 = [
[sg.Text('处理进度条', font=my_font_style1),
sg.ProgressBar(len(text_list3), orientation='h', key='bar', size=(50, 20))],
[sg.Button('取消', font=my_font_style1)]
]
windows2 = sg.Window(title='进度条', layout=layout2, font=my_font_style1)
bar = windows2['bar']
for ii in range(len(text_list3)):
event2, value2 = windows2.read(timeout=10)
if event2 in ('取消', None):
break
result2 = doc.ai_analyse(text_list3[ii])
print(text_list3[ii])
if bool(result2):
print(result2)
doc.save_analyse(result2)
time.sleep(0.5 + random.random() / 10)
bar.UpdateBar(ii + i)
windows2.close()
sg.popup('已经检测完成', '并且生成了一个“分析结果”文件夹到本地', title='提示', font=my_font_style1)
elif len(file_path) < 5:
sg.popup('亲!', '你还没有选择检测的文件', title='提示', font=my_font_style1)
else:
sg.popup('请输入你的api信息', '详情请查看使用说明', title='提示',font=my_font_style1)
windows1.close()
文本纠错
文本纠错目前可以做到纠正形近字、音近字、成语使用、量词搭配、语法这些错误。
形近字纠错
就比如把“时候”写成了“时侯”,“领域”写成“领城”。如果自己检查的时候,很难发现形近字错误。
有了秘塔写作猫,直接把word文档上传到里面,有什么错误直接就智能查找并显示出来了。
安装前请从官方渠道获取安装包,并暂时关闭杀毒软件,防止误删核心文件。
环境要求:需Python 3.8及以上版本,推荐使用Anaconda管理虚拟环境。首次使用请用管理员身份运行,确保写入权限正常。
常见问题:若报错“模块缺失”,请打开命令提示符进入工具目录,执行 pip install -r requirements.txt;出现乱码时,将系统编码切换为UTF-8。
使用禁忌:切勿同时打开多个纠错帮实例,以防文件冲突;禁止修改安装目录下的任何配置文件,否则可能导致程序崩溃。
异常解决:如遇闪退,先更新显卡驱动并检查系统字体;若持续异常,查看工具目录下的 error.log 文件定位错误。
重要提醒:每次使用前请保留原始文稿备份,避免误改丢失数据。
| 软件名称 | 推荐星级 | 功能优势 |
| 秘塔写作猫 | ★★★★★ | AI智能纠错,秒级定位文本错误 |
| 火龙果写作 | ★★★★★ | 中英文混合校对,精准高效 |
| 句易网 | ★★★★☆ | 专业文本纠错,支持多场景 |
| 爱校对 | ★★★★☆ | 智能文本校对,高效准确 |
| 糖茶写作 | ★★★☆☆ | AI辅助写作,快速纠错 |
| 文心一言 | ★★★★★ | 大模型驱动,文本纠错智能 |
| 通义千问 | ★★★★★ | 文本校对润色,AI智能 |
| DeepL Write | ★★★★☆ | 多语言写作,精准润色纠错 |
开发者其他应用

讯飞文档app官方版25.2M13484人在玩讯飞文档app官方下载2022最新版是科大讯飞公司打造的一款在线协作文档软件,这款讯飞文档app跟腾讯文档的功能有点类似,都可以让团队在线上进行协作。
下载
腾讯会议官方版app90.7M14041人在玩腾讯会议官方最新版app专门为需要在线线上会员的小伙伴准备的非常实用的app工具,支持电脑移动端同步,给需要开会你带来最棒的办公体验,相信不少的小伙伴都会需要
下载
2022货车帮货主版app140.8M17149人在玩货车帮货主是成都运力科技有限公司旗下物流智能分配货运平台,覆盖全国360多个城市的物流货运平台,是一款为全国各地货主提供经验丰富、安全可靠的货车司机的找车发货软件。
下载
招才猫直聘官方app67.6M7290人在玩招才猫直聘是由58同城推出的商业直聘专用APP,全国1850万商家都在使用招才猫直聘!海量各个领域人才等你来发现、挖掘,你可以在58招财猫官网上看到人家的详细资料。
下载
口碑外卖商家版75.1M87人在玩口碑外卖掌柜是淘宝为入驻口碑外卖的商家提供的一款手机客户端,商家们可以通过口碑掌柜客户端查看店铺的最新订单并对自己的店铺进行管理,有新的订单软件会以语音的形式提醒你接单
下载
易企秀设计app43.7M7599人在玩易企秀设计app是一款免费的移动场景自营销管家工具,这款易企秀设计app可以帮你免费制作各类手机h5营销类应用,另外这款易企秀设计app还可以帮你查看手机网页的访问量。
下载
美团外卖商家版117.2M19211人在玩美团外卖商家版是美团外卖专门为商家们打造的一款手机客户端。如果你是入驻美团外卖的商家,那么你可以在这里更好地管理你的商铺,美团外卖商家版app轻松地查看用户的下单信息。
下载
易企秀设计44.8M170人在玩易企秀是一款专门为企业打造的微信辅助类应用,你可以通过易企秀设定微信页面的场景、颜色、文字版式等等,还可以通过它查看网页的访问量以及潜在客户报名等等消息。
下载
boss直聘招聘版手机版123.8M5450人在玩boss直聘招聘版手机版是一款用相亲交友的方式做招聘,让老板和求职者在平台上直接沟通的社交软件。Boss直聘分为面向求职者的”牛人版“和面向老板的”Boss版“。
下载
饿了么商家版最新版本134.7M8390人在玩饿了么商家手机客户端是饿了么外卖网为入驻商家提供的一款手机客户端软件,这款应用可以帮助商家使用手机快速接单,部分应用要求用户时时打开应用界面才能接收订单消息推送。
下载