Paper Polisher Pro
Detección de escritura IA (autoevaluación de índice de IA para autores) · guía de pulido académico · estandarización terminológica · verificación de olor a traducción · informe de calidad · verificación de etiqueta de cumplimiento AIGC · atribución a nivel de párrafo · pre-revisión de revista. 100% local, cero carga de datos, cero credenciales, biblioteca estándar pura (capa de mejora onnxruntime opcional).
⛔ Leyes de hierro
- Solo números reproducibles. Cada métrica proviene de la evaluación de la partición de prueba (test split) en
eval/run_eval.py; se han eliminado afirmaciones no respaldadas como "tasa de detección del 100% / F1 98.3%" de documentos anteriores.- Sin veredicto en texto corto. Textos de menos de 100 caracteres obtienen
riesgo=desconocido(lección comunitaria: los falsos positivos en texto corto son incontrolables).- Las huellas digitales atribuyen, nunca puntúan. (Medido el 2026-08-15: la inyección de huellas digitales en el detector duplicó los falsos positivos humanos).
- Separación de calibración/evaluación. El espectro, los pesos y los umbrales se construyen solo con la mitad de calibración; la mitad de prueba se reserva para la evaluación final (un AUROC en muestra de 0.9972 cayó a un real 0.9187 una vez dividido).
TL;DR
- Qué: Conjunto de herramientas de autoevaluación de índice de IA + pulido académico 100% local para texto académico chino (modelo supervisado opcional para una precisión óptima; el inglés obtiene puntuaciones de reglas solo informativas).
- Inicio en 30 segundos:
python3 scripts/pp.py quickstart(demostración sin modelo, sin archivos) ·python3 scripts/pp.py detect draft.txt --format json· sugerencias de reescritura a nivel de oración:python3 scripts/pp.py fix draft.txt· informe completo de autoevaluación:python3 scripts/pp.py workflow draft.txt· entorno:python3 scripts/pp.py doctor(una entrada enruta todos los subcomandos). - Medido (partición de prueba, huella digital md5 2631df3d388b): AUROC 0.9998 pre-2026 / 0.9400 generación actual; FPR humano@medio 2.3%.
- Conoce los límites: textos <100 caracteres obtienen
riesgo=desconocidopor diseño · el texto médico en modo degradado recibe puntuaciones excesivas · documentos mixtos humano+IA: la puntuación a nivel de documento no es confiable (la atribución de párrafos es la señal procesable) · solo para autoevaluación de autores, nunca para evadir la detección de IA institucional. - Dónde mirar a continuación: escenarios prácticos en
references/best-practices.md· matriz de límites de capacidad a continuación · ejemplo de principio a fin en la sección de inicio rápido · preguntas frecuentes agrupadas en cinco partes (veredictos → modos e instalación → salida e interpretación → seguridad y verificación → herramientas y flujo de trabajo), salta al grupo que necesites · historial completo enCHANGELOG.md.
Enrutamiento de tareas en 30 segundos
| Quieres... | Ejecuta | Documentación detallada |
|---|---|---|
| Verificar el índice de IA de un borrador | pp.py detect draft.txt --format json | § Rendimiento medido + matriz de límites a continuación |
| Ver qué oraciones parecen generadas por IA | pp.py fix draft.txt | pp_fix_suggest.py --help |
| Comparar antes/después de tu reescritura | pp.py rewrite-check orig.txt rev.txt | Preguntas frecuentes: sugerencias de reescritura |
| Traducir un PDF manteniendo el diseño | pp.py bundle no es esto: usa doc-holmes | Herramientas relacionadas |
| Verificar convenciones de escritura | pp.py norm draft.txt | Preguntas frecuentes: norma de estilo |
| Procesar por lotes toda una carpeta de tesis | ai_detector.py --batch DIR --csv s.csv --report r.html | Preguntas frecuentes: CSV por lotes |
| Verificar la afirmación de cero carga de datos | pp.py verify + pp.py test | Declaración de seguridad |
| Pre-revisión de revista (contexto disciplinario) | ai_detector.py draft.txt --profile journal | § pre-revisión de revista |
| Solucionar problemas de entorno | pp.py doctor / pp.py freshness --status | Preguntas frecuentes: modos |
| Un panel visual único de todos los resultados | pp.py html-report draft.workflow.json -o report.html | Hoja de trucos de script: pp_report_html.py |
| Seguir un borrador a lo largo de rondas de reescritura | pp.py trend directorio_de_rondas/ -o trend.html | Hoja de trucos de script: pp_trend.py |
| No estar seguro de qué comando usar | pp.py recommend "reduce el índice de IA de este párrafo" | pp.py recommend --help |
Los tres límites más importantes (detalle completo en la matriz a continuación)
- Puntuación excesiva del registro médico en modo degradado: FPR humano solo con reglas @medio ≈59% médico vs ≈2% general; confía solo en veredictos
@altoen texto médico, o instala el modelo supervisado. - Documentos mixtos humano+IA: AUROC a nivel de documento 0.52-0.54 (limitación inherente de promediado); usa la atribución de párrafos como una clasificación para revisión humana, nunca como un veredicto automático.
- Alcance de cobertura de datos: el banco de términos tiene 2,344 términos médicos/académicos (los textos no médicos se estandarizan bajo por diseño); las capas de estilo se calibran en prosa académica (entrada coloquial/narrativa = solo informativa). Alcance por herramienta: matriz de subherramientas a continuación.
Integridad académica
Esta herramienta es para que los autores revisen y mejoren su propia calidad de escritura: oraciones más claras, terminología coherente, estilo natural. No está diseñada para evadir los sistemas de detección de IA institucionales, y no debe utilizarse para tergiversar el trabajo generado por IA como escrito por humanos. Sigue las políticas de uso y divulgación de IA de tu institución; el aigc_label_check.py incluido existe para ayudarte a cumplir con las reglas de divulgación y etiquetado (por ejemplo, las medidas de etiquetado de China de 2025-09) — para declarar la asistencia de IA correctamente, no para ocultarla. Cada informe de riesgo de IA (ai_detector.py / deai_gate.py) lleva un integrity_notice explícito a tal efecto.
Rendimiento medido (C-ReD + DetectRL-ZH, mitad de prueba de partición, n=5,251)
Nota sobre el alcance del corpus (v4.8.0): la tabla de la era v3.0 a continuación se midió en la mitad completa de la partición de prueba (n=5,251). El corpus de muestra incluido es un subconjunto: su mitad de prueba es n=1,304; números por corpus reproducibles: solo reglas (PP_NO_SUP) 0.8985 generación anterior / 0.7149 generación actual, fusionado 0.9998 / 0.9400 (
eval/results/v480_rules_*.json,v35ctl_*.json; las claves de caché vinculan la huella digital del modelo Y el modo del motor).
| Métrica | Línea base v2.0 | v3.0 reglas+espectro | v3.1 +supervisado | v3.4 supervisado (registro de era de versión, vigente ver línea de nueva medición a continuación) |
|---|---|---|---|---|
| AUROC (mitad de prueba) | 0.7046 | 0.9187 | 0.9997 | 1.0 |
| TPR@FPR5% | 30.4% | 49.0% | 99.95% | 100% |
| TPR@FPR1% | 16.7% | 24.9% | 99.88% | 100% |
| FPR humano @p99 calibrado | no medido | no medido | 3.56% (30/844) | 0.71% (6/844) |
| Paráfrasis/ataque mixto AUROC | 0.64 | 0.89 | 1.0 (en corpus) | 1.0 |
| Recuperación de ataque "asistido por IA" | — | — | 71.1% | 86.6% |
| Recuperación narrativa/film OOD | — | — | 1/6 | 5/6 solo supervisado · 6/6 fusión local |
Nueva medición vinculada a huella digital v4.4.0 del modelo supervisado enviado (md5
2631df3d388b): AUROC 0.9998 (mitad de prueba, n_base=927), TPR@FPR1% 99.4%, FPR humano@medio 2.3% —eval/results/v35ctl_oldgen.json. Las columnas anteriores se conservan como registros de era de versión (linaje de modelo anterior; los binarios no tenían huella digital antes de v4.4.0).
¿Qué columna se aplica a ti? (Navegación de calibre: las únicas líneas base actuales citables son v35ctl_* en eval/results/CURRENT.md; las columnas a la izquierda son registros de era de versión.) El paquete base ejecuta el motor de reglas+espectro v3.0 (columna AUROC 0.9187, medida en el corpus completo de partición de prueba; las líneas base archivadas pre-4.4.0 son anteriores a la vinculación de huella digital — cada resultado de evaluación desde v4.4.0 lleva el md5 del modelo desplegado como model_fp, números vinculados actuales en eval/results/v35ctl_*.json). Las dos columnas de la derecha requieren el modelo supervisado local opcional (ver más abajo). El motor te indica honestamente en qué modo estás: cada informe lleva degraded_mode / degraded_notice cuando la capa supervisada está ausente u omitida.
Matriz de límites de capacidad (léela antes de confiar en cualquier detector)
| Escenario | Comportamiento |
|---|---|
| Prosa académica china, pila completa | Mejor caso (AUROC 0.9998 en partición de prueba, FPR humano@medio 2.3% — v4.4.0 vinculado a huella digital) |
| Paquete base sin modelo | Reglas+espectro (0.9187); registro médico puntuado en exceso (FPR humano solo reglas @medio: ~59% médico vs ~2% general) → confía solo en veredictos @alto en texto médico |
| Texto en inglés | El filtro de idioma omite la capa supervisada entrenada en chino por diseño; esqueleto de reglas solo en inglés, solo informativo |
| Documentos mixtos humano+IA | AUROC a nivel de documento 0.52-0.54 (limitación inherente de promediado); AUROC a nivel de párrafo 0.69 con punto de operación óptimo calibrado P=0.60 al 63% de cobertura (references/para_thresholds.json) — por debajo del umbral de veredicto automático; usa clasificaciones de pp_workflow.py/paragraph_report.py solo para revisión humana |
| Cabezal de regresión de extensión de edición | ρ=0.540 — reportado como metadato, nunca utilizado en veredictos |
| Modelos de generación actual (muestreo 2026-09) | AUROC 0.9400 (nueva medición vinculada a huella digital v4.4.0, conjunto de evaluación de generación actual de 443 documentos: 9 familias incl. K3/K2.7/Qwen3.7-3.8/DS-V4/V4.1/GLM-5.3/M3) vs 0.9998 pre-2026 en partición de prueba — una brecha verificada modesta. La cifra anterior de 0.6542-vs-0.9022 fue un artefacto de medición (reproducción de caché de puntuaciones obsoletas + linaje de modelo no verificado); ambas clases están estructuralmente prevenidas desde v4.4.0 (model_fp en cada JSON de resultado) |
| Texto coloquial / de registro oral | La capa de estilo está calibrada en prosa académica; trata las puntuaciones de estilo como informativas fuera de ese registro |
Matriz de alcance de subherramientas (dominio calibrado de cada subherramienta)
| Subherramienta | Dominio calibrado | Comportamiento fuera de dominio |
|---|---|---|
| ai_detector / deai_gate | Prosa académica china (calibrada en partición de prueba) | Registro médico puntuado en exceso en modo degradado; inglés solo reglas informativas; entrada narrativa/coloquial recibe un aviso de registro |
| paragraph_report / pp_rewrite_check | Mismos criterios del motor que arriba, por párrafo | Mismas limitaciones; rewrite_check compara dos borradores bajo criterios idénticos |
| pp_fix_suggest | Biblioteca de patrones de escritura IA china (registro académico) | El texto en inglés solo recibe verificaciones básicas de conectores/ritmo; los hallazgos son observaciones de estilo, nunca detecciones |
| term_check | Terminología médica/académica china (banco de 2,344 términos) | Texto no médico: la tasa de estandarización lee baja — eso es alcance del banco, no un error; --auto-fix respeta el contexto |
| translation_smell_check | Prosa académica china (patrones de traducción) | Texto fuente de estilo inglés: la salida enumera sus términos de punto ciego en lugar de pretender cobertura |
| style_distance | Estilometría de prosa académica | Fuera del registro académico, la puntuación de estilo es solo informativa (se indica en la salida) |
| style_norm | Convenciones mecánicas — independientes del registro | Sin puntuación por diseño; las comprobaciones estadísticas (números/abreviaturas) son débiles en muestras cortas y lo indican |
| aigc_label_check | Metadatos de archivo / C2PA / declaraciones de etiqueta explícitas | No es un detector de contenido; verifica el cumplimiento del etiquetado, no la autoría |
| quality_report | Dimensiones de legibilidad/calidad del manuscrito | No es una medida de índice de IA; las heurísticas de puntuación son genéricas, no ajustadas a la revista |
| docx_text | Extracción de texto .docx (que preserva párrafos) | No es un conversor de PDF: los PDF se rechazan con consejos de conversión (la extracción de PDF chino sin dependencias no se puede garantizar) |
| modo por lotes (--batch) | .txt/.md/.docx <5 MB por archivo | >5 MB omitido por diseño; los docx cifrados/solo de imagen producen un error explícito, no una salida vacía silenciosa |
Declaración de seguridad y comportamiento
- 100% local: cada función se ejecuta en el dispositivo. El código base no realiza ninguna llamada de red saliente: no tiene bibliotecas cliente de red, ni utilidades de red. El único componente con capacidad de escucha es el formulario HTTP MCP opcional (
--transport http), que se vincula solo a 127.0.0.1 loopback (vinculación asegurada por la regla de lista blanca del verificador AST); el escaneo AST trata cualquier listener sin un enlace loopback como una violación. Verifica estructuralmente:python3 scripts/pp_verify.py(escaneo a nivel AST; salida 0 = cero llamadas de red, todos los scripts compilan). La búsqueda grep de texto heredadogrep -rEin "urllib|requests|socket|import http" scripts/puede mostrar algunas cadenas de URL en los pies de página de los informes — esos son datos en constantes de cadena, no código de red; el verificador AST distingue entre ambos. - Sin carga de datos, sin credenciales: no lee ni transmite credenciales, claves o datos personales; las únicas dos variables de entorno son
PP_NO_SUP(omitir la capa supervisada) yPP_LANG(encambia la superficie de entrada depp.pyal inglés) — ambas son interruptores de comportamiento local. - Sin persistencia: no crea tareas programadas, entradas de inicio automático ni cambios en la configuración del sistema; los archivos temporales (JSON entre capas, texto de prueba) se eliminan después de su uso.
- Sin código remoto: no carga modelos o scripts remotos; el modelo supervisado opcional es colocado por el usuario en una ruta local.
- Límite de datos: lee/escribe solo archivos especificados por el usuario, el directorio temporal del sistema y sus propios directorios de datos del paquete (artefactos de calibración/actualización); los informes solo van a donde el usuario los dirige.
- Integridad académica: consulte la sección anterior — para autoevaluación y mejora de calidad del autor con divulgación conforme a la política; no para evadir la detección.
Contrato de códigos de salida (estable desde v5.8.0)
| Salida | Significado | Casos típicos |
|---|---|---|
| 0 | Éxito | informe producido · verify paso sin red · suite test verde |
| 1 | Se ejecutó pero no pasó | fallo en tiempo de ejecución del motor (consejos de recuperación en el mensaje) · fallos de test · desviación de verify · desviación de línea base de freshness |
| 2 | Error de uso o de entrada | subcomando desconocido · archivo faltante · texto con menos de 100 caracteres · archivo de entrada no analizable |
| 3 | Entorno no listo | fallo de instalación/verificación del modelo de pp_setup.py — ejecuta pp.py doctor primero |
Espejo programático: pp_api lanza ValueError para entrada inválida (↔ salida 2) y RuntimeError para fallo en tiempo de ejecución (↔ salida 1), ambos llevan consejos de recuperación en el mensaje. Estos códigos son una promesa de estabilidad — las versiones futuras no los reutilizarán.
Antipatrones (cada uno con la forma correcta)
Esta sección enumera solo reglas de tipo juicio (qué no hacer); las preguntas operativas de cómo hacer viven en
references/faq.md(buscables mediantepp.py faq <keyword>) — los dos se referencian mutuamente en lugar de repetirse.
- No envíes <100 caracteres y esperes un veredicto —
riesgo=desconocidoes por diseño (los falsos positivos en texto corto son incontrolables). ✅ En su lugar: envía 300+ caracteres, o usa la verificación de norma de estilo (pp.py norm) que no tiene veredicto y funciona en muestras cortas. - No confíes en puntuaciones en modo degradado en texto médico