CommunityRédaction et éditiongithub.com

docsor1212/paper-polisher

Auto-évaluation du taux d'IA et conseils de polissage pour la rédaction académique : suggestions de réécriture au niveau des phrases (localise et conseille, ne réécrit jamais automatiquement), vérification de la terminologie et de la cohérence, détection de 'traduction', attribution de paragraphes, pré-vérification pour revue avec contexte disciplinaire, vérification des normes stylistiques, rapport de qualité, vérification des étiquettes AIGC, plus `--batch DIR` avec résumé HTML. Lit les fichiers .docx directement. Pas pour : traduction de documents/PDF, vérification de plagiat, ghost-writing ou exécution de réécritures ; textes de moins de 100 caractères n'obtiennent aucun verdict par conception. 100 % local, zéro téléchargement ; tests intégrés + auto-vérification AST sans réseau. Moteur de règles multicouche + spectre de tokens + couche ONNX supervisée optionnelle (Qwen3-0.6B) + attribution par empreinte LLM + pipeline de fraîcheur. Les chiffres du moteur de base se reproduisent à partir des évaluations tenues à l'écart ; les colonnes supervisées sont du côté de l'auteur (modèle non inclus).

Qu'est-ce que paper-polisher ?

Paper Polisher Pro est un outil local d'auto-évaluation et d'aide au polissage pour la rédaction académique, principalement en chinois. Il détecte le taux d'IA rédactionnelle, suggère des réécritures au niveau des phrases (sans jamais modifier le texte automatiquement), vérifie la cohérence terminologique, identifie les odeurs de traduction, attribue les paragraphes à une source humaine ou IA, et effectue une pré-vérification pour les revues avec contexte disciplinaire. L'outil fonctionne entièrement en local, sans aucun téléchargement de données, et lit directement les fichiers .docx. Il intègre un moteur de règles multicouche combiné à une analyse du spectre de tokens, avec une couche supervisée optionnelle via Qwen3-0.6B (ONNX). Il prend en charge les modes batch pour des dossiers entiers, générant des rapports HTML récapitulatifs, et propose des vérifications de normes stylistiques, des rapports de qualité, ainsi qu'une vérification de conformité aux étiquettes AIGC. L'outil est conçu pour les auteurs souhaitant améliorer leur écriture de manière transparente et conforme aux politiques institutionnelles, et non pour contourner les systèmes de détection d'IA.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/docsor1212/paper-polisher-pro/tree/HEAD

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Paper Polisher Pro

Détection d'écriture IA (auto-évaluation du taux d'IA pour les auteurs) · conseils de polissage académique · normalisation terminologique · vérification des odeurs de traduction · rapport de qualité · vérification des étiquettes de conformité AIGC · attribution au niveau des paragraphes · pré-vérification pour revue. 100 % local, zéro téléchargement, zéro identifiant, bibliothèque standard pure (couche d'amélioration onnxruntime optionnelle).

⛔ Lois de fer

  1. Uniquement des chiffres reproductibles. Chaque métrique provient de l'évaluation tenue à l'écart (split de test) dans eval/run_eval.py ; les affirmations non étayées comme "taux de détection 100 % / F1 98,3 %" provenant de documents plus anciens ont été supprimées.
  2. Aucun verdict sur les textes courts. Les textes de moins de 100 caractères obtiennent risk=unknown (leçon de la communauté : les faux positifs sur les textes courts sont incontrôlables).
  3. Les empreintes digitales attribuent, ne notent jamais. (Mesuré le 15-08-2026 : injecter des empreintes dans le détecteur a doublé les faux positifs humains.)
  4. Séparation étalonnage/évaluation. Le spectre, les poids et les seuils sont construits uniquement sur la moitié d'étalonnage ; la moitié de test est réservée pour l'évaluation finale (un AUROC dans l'échantillon de 0,9972 s'est effondré à un réel 0,9187 une fois divisé).

TL;DR

  • Quoi : boîte à outils d'auto-évaluation du taux d'IA + polissage académique 100 % local pour les textes académiques chinois (modèle supervisé optionnel pour une meilleure précision ; l'anglais obtient des scores consultatifs basés uniquement sur les règles).
  • Démarrage en 30 secondes : python3 scripts/pp.py quickstart (démo zéro-modèle, zéro-fichier) · python3 scripts/pp.py detect draft.txt --format json · suggestions de réécriture au niveau des phrases : python3 scripts/pp.py fix draft.txt · rapport d'auto-évaluation complet : python3 scripts/pp.py workflow draft.txt · environnement : python3 scripts/pp.py doctor (une seule entrée achemine toutes les sous-commandes)
  • Mesuré (tenu à l'écart, empreinte liée md5 2631df3d388b) : AUROC 0,9998 pré-2026 / 0,9400 génération actuelle ; FPR humain @medium 2,3%.
  • Connaître les limites : les textes <100 caractères obtiennent risk=unknown par conception · le texte médical en mode dégradé est sur-noté · les documents mixtes humains+IA : le score au niveau du document n'est pas fiable (l'attribution des paragraphes est le signal exploitable) · auto-évaluation des auteurs uniquement — jamais pour contourner la détection institutionnelle d'IA.
  • Où regarder ensuite : scénarios pratiques dans references/best-practices.md · matrice des limites de capacité ci-dessous · exemple de bout en bout dans § Démarrage rapide · FAQ regroupée en cinq parties (verdicts → modes et installation → sortie et interprétation → sécurité et vérification → outils et flux de travail), accédez directement au groupe dont vous avez besoin · historique complet dans CHANGELOG.md.

Routage des tâches en 30 secondes

Vous voulez...ExécutezDocumentation détaillée
Vérifier le taux d'IA d'un brouillonpp.py detect draft.txt --format json§ Performances mesurées + matrice des limites ci-dessous
Voir quelles phrases ressemblent à de l'IApp.py fix draft.txtpp_fix_suggest.py --help
Comparer avant/après votre réécriturepp.py rewrite-check orig.txt rev.txtFAQ : suggestions de réécriture
Traduire un PDF en conservant la mise en pagepp.py bundle pas ceci — utilisez doc-holmesOutils connexes
Vérifier les conventions d'écriturepp.py norm draft.txtFAQ : normes stylistiques
Traiter par lot tout un dossier de thèseai_detector.py --batch DIR --csv s.csv --report r.htmlFAQ : CSV par lot
Vérifier l'affirmation zéro-téléchargementpp.py verify + pp.py testDéclaration de sécurité
Pré-vérification pour revue (contexte disciplinaire)ai_detector.py draft.txt --profile journal§ pré-vérification revue
Dépannage de l'environnementpp.py doctor / pp.py freshness --statusFAQ : modes
Un tableau de bord visuel de tous les résultatspp.py html-report draft.workflow.json -o report.htmlAide-mémoire du script : pp_report_html.py
Suivre un brouillon à travers les cycles de réécriturepp.py trend répertoire_tours/ -o trend.htmlAide-mémoire du script : pp_trend.py
Vous ne savez pas quelle commande utiliser ?pp.py recommend "réduire le taux d'IA de ce passage"pp.py recommend --help

Les trois limites les plus importantes (détails complets dans la matrice ci-dessous)

  1. Sur-note du registre médical en mode dégradé — FPR humain @medium basé uniquement sur les règles ≈59 % médical vs ≈2 % général ; ne faites confiance qu'aux verdicts @high sur les textes médicaux, ou installez le modèle supervisé.
  2. Documents mixtes humains+IA — AUROC au niveau du document 0,52-0,54 (limitation inhérente au calcul de moyenne) ; utilisez l'attribution des paragraphes comme un classement pour la révision humaine, jamais comme un verdict automatique.
  3. Périmètre de couverture des données — la banque de termes contient 2 344 termes médicaux/académiques (les textes non médicaux sont normalisés bas par conception) ; les couches stylistiques s'étalonnent sur la prose académique (entrée familière/narrative = consultatif uniquement). Périmètre par outil : matrice des sous-outils ci-dessous.

Intégrité académique

Cet outil est destiné aux auteurs qui auto-évaluent et améliorent la qualité de leur propre écriture — phrases plus claires, terminologie cohérente, style naturel. Il n'est pas conçu pour contourner les systèmes institutionnels de détection d'IA, et il ne doit pas être utilisé pour présenter un travail généré par l'IA comme étant rédigé par un humain. Suivez les politiques d'utilisation et de divulgation de l'IA de votre institution ; le aigc_label_check.py inclus existe pour vous aider à vous conformer aux règles de divulgation et d'étiquetage (par exemple, les mesures d'étiquetage de la Chine de septembre 2025) — pour déclarer correctement l'assistance de l'IA, pas pour la cacher. Chaque rapport de risque IA (ai_detector.py / deai_gate.py) porte un integrity_notice explicite à cet effet.

Performances mesurées (C-ReD + DetectRL-ZH, moitié de test tenue à l'écart, n=5 251)

Note sur le périmètre du corpus (v4.8.0) : le tableau de l'ère v3.0 ci-dessous a été mesuré sur la totalité de la moitié de test tenue à l'écart (n=5 251). Le corpus d'échantillon inclus est un sous-ensemble — sa moitié de test est n=1 304 ; chiffres reproductibles par corpus : règles uniquement (PP_NO_SUP) 0,8985 ancienne génération / 0,7149 génération actuelle, fusionné 0,9998 / 0,9400 (eval/results/v480_rules_*.json, v35ctl_*.json ; les clés de cache lient l'empreinte du modèle ET le mode du moteur).

MétriqueRéférence v2.0v3.0 règles+spectrev3.1 +supervisév3.4 supervisé (enregistrement d'époque, ligne de remesure actuelle ci-dessous)
AUROC (moitié de test)0,70460,91870,99971,0
TPR@FPR5%30,4%49,0%99,95%100%
TPR@FPR1%16,7%24,9%99,88%100%
FPR humain @p99 calibrénon mesurénon mesuré3,56% (30/844)0,71% (6/844)
AUROC paraphrase/attaque mixte0,640,891,0 (dans le corpus)1,0
Rappel attaque "assisté par IA"——71,1%86,6%
Rappel OOD récit/ film simple——1/65/6 supervisé uniquement · 6/6 fusion locale

Remesure liée à l'empreinte v4.4.0 du modèle supervisé livré (md5 2631df3d388b) : AUROC 0,9998 (moitié de test, n_base=927), TPR@FPR1% 99,4%, FPR humain@medium 2,3% — eval/results/v35ctl_oldgen.json. Les colonnes ci-dessus sont conservées comme enregistrements d'époque (lignée de modèle antérieure ; les binaires n'étaient pas empreintés avant la v4.4.0).

Quelle colonne s'applique à vous ? (Navigation par calibre : les seules références actuelles citables sont v35ctl_* dans eval/results/CURRENT.md ; les colonnes de gauche sont des enregistrements d'époque.) Le paquet de base exécute le moteur règles+spectre v3.0 (colonne AUROC 0,9187, mesuré sur l'ensemble du corpus tenu à l'écart ; les références archivées pré-4.4.0 sont antérieures à la liaison d'empreinte — chaque résultat d'évaluation depuis la v4.4.0 porte le md5 du modèle déployé comme model_fp, les chiffres liés actuels dans eval/results/v35ctl_*.json). Les deux colonnes de droite nécessitent le modèle supervisé local optionnel (voir ci-dessous). Le moteur vous indique honnêtement dans quel mode vous êtes : chaque rapport porte degraded_mode / degraded_notice lorsque la couche supervisée est absente ou ignorée.

Matrice des limites de capacité (à lire avant de faire confiance à un détecteur)

ScénarioComportement
Prose académique chinoise, pile complèteMeilleur cas (AUROC 0,9998 tenu à l'écart, FPR humain@medium 2,3% — v4.4.0 lié à l'empreinte)
Paquet de base sans modèleRègles+spectre (0,9187) ; texte médical sur-noté (FPR humain @medium basé uniquement sur les règles : ~59% médical vs ~2% général) → ne faites confiance qu'aux verdicts @high sur les textes médicaux
Texte anglaisLe filtrage linguistique ignore la couche supervisée entraînée en chinois par conception ; squelette anglais basé uniquement sur les règles, consultatif uniquement
Documents mixtes humains+IAAUROC au niveau du document 0,52-0,54 (limitation inhérente au calcul de moyenne) ; AUROC au niveau du paragraphe 0,69 avec point de fonctionnement optimal calibré P=0,60 à 63% de couverture (references/para_thresholds.json) — en dessous du seuil de verdict automatique ; utilisez les classements pp_workflow.py/paragraph_report.py pour la révision humaine uniquement
Tête de régression de l'ampleur des modificationsρ=0,540 — rapporté comme métadonnée, jamais utilisé dans les verdicts
Modèles de génération actuelle (échantillonnage 2026-09)AUROC 0,9400 (remesure liée à l'empreinte v4.4.0, ensemble d'évaluation de 443 documents de génération actuelle : 9 familles incl. K3/K2.7/Qwen3.7-3.8/DS-V4/V4.1/GLM-5.3/M3) contre 0,9998 tenu à l'écart pré-2026 — un écart vérifié modeste. Le chiffre précédent 0,6542 contre 0,9022 était un artefact de mesure (rejeu de cache de score obsolète + lignée de modèle non vérifiée) ; les deux classes sont structurellement empêchées depuis la v4.4.0 (model_fp dans chaque JSON de résultat)
Texte familier / registre oralLa couche stylistique est calibrée sur la prose académique ; considérez les scores stylistiques comme consultatifs en dehors de ce registre

Matrice de périmètre des sous-outils (domaine calibré de chaque sous-outil)

Sous-outilDomaine calibréComportement hors domaine
ai_detector / deai_gateProse académique chinoise (calibrée tenue à l'écart)Texte médical sur-noté en mode dégradé ; anglais consultatif basé uniquement sur les règles ; entrée narrative/familière reçoit un avis de registre
paragraph_report / pp_rewrite_checkMêmes critères de moteur que ci-dessus, par paragrapheMêmes limites ; rewrite_check compare deux brouillons selon des critères identiques
pp_fix_suggestBibliothèque de motifs d'écriture IA chinoise (registre académique)Texte anglais obtient uniquement des vérifications de base des connecteurs/rythme ; les résultats sont des observations stylistiques, jamais des détections
term_checkTerminologie médicale/académique chinoise (banque de 2 344 termes)Texte non médical : le taux de normalisation est bas — c'est le périmètre de la banque, pas une erreur ; --auto-fix respecte le contexte
translation_smell_checkProse académique chinoise (motifs de traduction)Texte source de style anglais : la sortie liste ses termes d'angle mort au lieu de prétendre à une couverture
style_distanceStylométrie de la prose académiqueEn dehors du registre académique, le score stylistique est consultatif uniquement (indiqué dans la sortie)
style_normConventions mécaniques — indépendantes du registrePas de score par conception ; les vérifications statistiques (chiffres/abréviations) sont faibles sur les échantillons courts et le mentionnent
aigc_label_checkMétadonnées de fichier / C2PA / déclarations d'étiquettes explicitesPas un détecteur de contenu ; vérifie la conformité de l'étiquetage, pas la paternité
quality_reportDimensions de lisibilité/qualité du manuscritPas une mesure du taux d'IA ; les heuristiques de score sont génériques, non adaptées aux revues
docx_textExtraction de texte .docx (préservant les paragraphes)Pas un convertisseur PDF — les PDF sont rejetés avec un conseil de conversion (l'extraction de PDF chinois sans dépendance ne peut être garantie)
mode batch (--batch).txt/.md/.docx <5 Mo par fichierLes fichiers >5 Mo sont ignorés par conception ; les fichiers .docx cryptés/uniquement image génèrent une erreur explicite, pas une sortie vide silencieuse

Déclaration de sécurité et de comportement

  • 100 % local : chaque fonctionnalité s'exécute sur l'appareil. La base de code ne fait aucun appel réseau sortant — pas de bibliothèques client réseau, pas d'utilitaires réseau. Le seul composant capable d'écouter est le formulaire HTTP MCP optionnel (--transport http), qui se lie uniquement à la boucle locale 127.0.0.1 (liaison vérifiée par la règle de liste blanche du vérificateur AST) ; l'analyse AST traite tout écouteur sans liaison de boucle locale comme une violation. Vérifiez structurellement : python3 scripts/pp_verify.py (analyse au niveau AST ; sortie 0 = zéro appel réseau, tous les scripts compilent). La recherche textuelle héritée grep -rEin "urllib|requests|socket|import http" scripts/ peut montrer quelques chaînes d'URL dans les pieds de page de rapport — ce sont des données dans des constantes de chaîne, pas du code réseau ; le vérificateur AST distingue les deux.
  • Pas de téléchargement, pas d'identifiants : ne lit ni ne transmet d'identifiants, de clés ou de données personnelles ; les deux seules variables d'environnement sont PP_NO_SUP (ignorer la couche supervisée) et PP_LANG (en change la surface d'entrée de pp.py en anglais) — deux bascules de comportement locales.
  • Pas de persistance : ne crée pas de tâches planifiées, d'entrées de démarrage automatique ou de modifications de configuration système ; les fichiers temporaires (JSON inter-couche, texte de test) sont supprimés après utilisation.
  • Pas de code à distance : ne charge pas de modèles ou de scripts à distance ; le modèle supervisé optionnel est placé par l'utilisateur dans un chemin local.
  • Limite des données : lit/écrit uniquement les fichiers spécifiés par l'utilisateur, le répertoire temp système et ses propres répertoires de données de paquet (artefacts d'étalonnage/fraîcheur) ; les rapports vont uniquement là où l'utilisateur les dirige.
  • Intégrité académique : voir la section ci-dessus — pour l'auto-évaluation de l'auteur et l'amélioration de la qualité avec une divulgation conforme aux politiques ; pas pour contourner la détection.

Contrat des codes de sortie (stable depuis la v5.8.0)

SortieSignificationCas typiques
0Succèsrapport produit · passe verify zéro-réseau · suite de test verte
1Exécuté mais non validééchec d'exécution du moteur (conseil de récupération dans le message) · échecs test · dérive verify · dérive de la référence freshness
2Erreur d'utilisation ou d'entréesous-commande inconnue · fichier manquant · texte de moins de 100 caractères · fichier d'entrée non analysable
3Environnement non prêtéchec d'installation/vérification du modèle pp_setup.py — exécutez d'abord pp.py doctor

Miroir programmatique : pp_api lève ValueError pour une entrée invalide (↔ sortie 2) et RuntimeError pour un échec d'exécution (↔ sortie 1), les deux portant un conseil de récupération dans le message. Ces codes sont une promesse de stabilité — les futures versions ne les réaffecteront pas.

Anti-patrons (avec la bonne façon de faire)

Cette section répertorie uniquement les règles de type jugement (quoi ne pas faire) ; les questions opérationnelles de type "comment faire" vivent dans references/faq.md (consultable via pp.py faq <mot-clé>) — les deux se référencent mutuellement au lieu de se répéter.

  • Ne soumettez pas <100 caractères en espérant un verdict — risk=unknown est intentionnel (les faux positifs sur les textes courts sont incontrôlables). ✅ À la place : soumettez 300+ caractères, ou utilisez la vérification des normes stylistiques (pp.py norm) qui n'a pas de verdict et fonctionne sur des échantillons courts.
  • Ne faites pas confiance aux scores en mode dégradé sur les textes médicaux.

... [tronqué pour la traduction]

Skills associés