Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClariCat

Corrector català amb motor local, auditable i independent de LanguageTool.

Creat i mantingut per Júlia Rosell Saldaña.

Estat del projecte: versió 0.1.2, alfa funcional. ClariCat ja es pot utilitzar com a corrector ortogràfic assistit, però encara no ofereix la profunditat morfològica i sintàctica d’un corrector madur.

ClariCat és un corrector pensat específicament per al català. El seu motor principal funciona localment, no incorpora codi ni regles de LanguageTool i es pot utilitzar des de:

  • Chrome i Microsoft Edge;
  • Firefox;
  • Microsoft Word;
  • LibreOffice;
  • una API HTTP local;
  • la línia d’ordres.

La revisió base combina regles lingüístiques pròpies, un diccionari català de formes flexionades i un recurs lingüístic auxiliar derivat de Fractalis.

Opcionalment, ClariCat pot executar una segona revisió mitjançant un model instal·lat localment a Ollama, com ara Salamandra. Aquesta capa d’IA no és necessària per al funcionament del corrector base i no envia el text a cap API remota de ClariCat.

Objectius

ClariCat no vol ser només un corrector alternatiu, sinó una base lingüística:

  • local per defecte;
  • comprensible i auditable;
  • modificable;
  • modular;
  • reutilitzable;
  • adaptable a diferents connectors;
  • independent de grans serveis remots;
  • útil per a altres projectes i comunitats lingüístiques.

L’objectiu és construir una eina funcional que pugui créixer gradualment sense convertir-se en una caixa negra ni dependre obligatòriament d’un model d’IA, d’un servei al núvol o d’una infraestructura externa.

Estat actual

Component Estat
Motor JavaScript Funcional i compartit entre Node i navegador
Dependències npm Cap dependència externa en temps d’execució
Diccionari català 991.388 formes úniques carregables offline
Recurs lingüístic auxiliar Exportació funcional derivada de Fractalis
Chrome i Edge Extensió Manifest V3 funcional en mode de desenvolupador
Firefox Complement funcional i paquet preparat per validar o enviar a AMO
Microsoft Word Panell Office.js funcional mitjançant servidor local
LibreOffice Connector OXT mitjançant un endpoint compatible amb LanguageTool
API local API pròpia i endpoint /v2/check
Ollama Capa opcional disponible a navegador, Word i LibreOffice
Verificació actual 31 proves automatitzades i un conjunt inicial de 9 casos d’avaluació

ClariCat ja és una base funcional i utilitzable. Encara no substitueix en tots els casos un corrector amb anàlisi morfològica i sintàctica profunda.

Les limitacions conegudes es documenten al final d’aquest fitxer.

Prova ràpida

Des de l’arrel del projecte:

node apps\cli\check.js --dictionary softcatala --text "Aixo conte una erradazz."

Per executar les proves:

npm test

Per executar el conjunt inicial d’avaluació:

npm run eval

Per arrencar el servidor local:

tools\start-claricat-server.cmd

El servidor escolta per defecte a:

http://127.0.0.1:8765

Funcions principals

ClariCat incorpora actualment:

  • regles pròpies d’ortografia;
  • detecció d’accents absents o incorrectes;
  • regles d’apostrofació i contraccions;
  • detecció inicial de barbarismes i residus castellans;
  • suggeriments per a variants pròximes i algunes escriptures fonètiques;
  • perfils específics per connector;
  • protecció de variables, placeholders, etiquetes, URL, codis i fragments tècnics;
  • un diccionari català de formes flexionades;
  • un recurs lingüístic auxiliar derivat de Fractalis;
  • una API HTTP pròpia;
  • un endpoint compatible amb el format bàsic de LanguageTool;
  • una capa opcional d’IA local amb Ollama;
  • scripts d’instal·lació i empaquetatge per a Windows;
  • proves automatitzades del motor, els connectors i l’API.

Els perfils dels connectors prioritzen la correcció ortogràfica. Les recomanacions tipogràfiques o d’estil potencialment sorolloses es mantenen desactivades o separades.

Arquitectura

Chrome / Edge / Firefox
        |
        +-- motor ClariCat dins del complement
        |   +-- regles pròpies
        |   +-- diccionari català
        |   +-- recurs lingüístic auxiliar
        |   +-- Ollama local opcional

Word / LibreOffice / clients HTTP
        |
        +-- servidor local 127.0.0.1:8765
            +-- motor ClariCat
            +-- diccionari català
            +-- recurs lingüístic auxiliar
            +-- Ollama local opcional

El nucli principal es troba a:

src/core/claricat-core.js

És un mòdul UMD que funciona tant a Node com al navegador.

La interfície del diccionari es troba a:

src/core/simple-dictionary.js

El diccionari implementa una interfície petita basada principalment en:

has
suggest

Els navegadors executen el motor des del service worker del complement.

Microsoft Word i LibreOffice comparteixen el servidor:

apps/server/server.js

Això permet que els dos connectors utilitzin el mateix motor, els mateixos recursos, els mateixos perfils i la mateixa configuració d’Ollama.

Ordre simplificat d’una revisió

  1. Es detecten i protegeixen els fragments no lingüístics.
  2. S’apliquen les regles lingüístiques pròpies.
  3. Es comproven les formes amb el diccionari.
  4. El recurs lingüístic auxiliar reforça determinats suggeriments.
  5. El perfil del connector elimina categories massa sorolloses.
  6. Si Ollama està activat, el model afegeix avisos que no se solapen amb els del motor principal.

Requisits

Per executar el projecte amb les dades incloses:

  • Windows 10 o Windows 11 per als instal·ladors i scripts actuals;
  • Node.js 20 o posterior;
  • PowerShell 5.1 o posterior;
  • Chrome, Edge, Firefox, Microsoft Word o LibreOffice segons el connector.

Per utilitzar la revisió opcional amb IA local:

  • Ollama en execució;
  • un model instal·lat que entengui prou bé el català.

La configuració inicial proposa:

salamandra

Cal escriure el nom exacte amb què el model aparegui a Ollama.

No cal executar:

npm install

ClariCat no té dependències npm externes en temps d’execució ni per a les proves actuals.

Les ordres npm run ... són dreceres. També es poden executar directament les ordres equivalents de Node i PowerShell.

Posada en marxa

Comprovacions inicials:

node --version
npm test
npm run eval

Per arrencar el servidor local:

tools\start-claricat-server.cmd

Adreces útils:

Funció Adreça
Estat del motor http://127.0.0.1:8765/api/status
Configuració compartida http://127.0.0.1:8765/settings
Panell de Word http://127.0.0.1:8765/office/taskpane.html

La configuració local d’Ollama es desa a:

%LOCALAPPDATA%\ClariCat\settings.json

Arrencada automàtica

Per instal·lar l’arrencada automàtica del servidor en iniciar la sessió de Windows:

powershell -ExecutionPolicy Bypass -File tools\install-local-server-autostart.ps1

Per retirar-la:

powershell -ExecutionPolicy Bypass -File tools\uninstall-local-server-autostart.ps1

Línia d’ordres

Revisió amb el motor base

node apps\cli\check.js --text "Aisho es dolentu. Retos pendents."

Revisió amb el diccionari català complet

node apps\cli\check.js --dictionary softcatala --text "Aquest text conte una erradazz."

Revisió d’un fitxer i sortida JSON

node apps\cli\check.js --dictionary softcatala --json --file document.txt

Valors admesos per a --dictionary:

starter
softcatala
softcatala-base

També es pot indicar el camí d’un fitxer de paraules propi.

API local

Estat del sistema

GET /api/status

Retorna informació sobre:

  • la versió;
  • l’autoria;
  • l’estat del diccionari;
  • l’activació del recurs lingüístic auxiliar;
  • la configuració d’Ollama.

L’endpoint no exposa les fonts ni l’estructura interna de Fractalis.

Revisió nativa

POST /api/check
Content-Type: application/json

Exemple:

{
  "text": "Aixo es una prova.",
  "profile": "office",
  "client": "word",
  "useOllama": false
}

La resposta conté una llista matches amb informació com ara:

  • identificador de regla;
  • categoria;
  • severitat;
  • posició;
  • context;
  • suggeriments;
  • referències.

L’objecte stats informa dels recursos que han intervingut en la revisió.

Endpoint compatible amb LanguageTool

POST /v2/check
Content-Type: application/x-www-form-urlencoded

Exemple:

language=ca&text=Aquest+text+conte+una+errada.

La resposta conserva l’estructura bàsica esperada pels clients compatibles amb LanguageTool, però el processament és íntegrament de ClariCat.

Configuració i Ollama

Endpoints disponibles:

GET  /api/settings
POST /api/settings
POST /api/ollama/status

Permeten:

  • llegir la configuració compartida;
  • desar el model;
  • desar l’adreça d’Ollama;
  • activar o desactivar Ollama per connector;
  • comprovar si Ollama i el model seleccionat estan disponibles.

Per seguretat i privadesa, ClariCat només accepta adreces d’Ollama amb aquests hosts:

127.0.0.1
localhost
::1

Connectors

Chrome i Microsoft Edge

  1. Executa:
npm run package
  1. Descomprimeix:
dist/claricat-browser-chrome-edge.zip
  1. Obre:
chrome://extensions

o:

edge://extensions
  1. Activa el mode de desenvolupador.
  2. Carrega la carpeta descomprimida.

El complement pot revisar:

  • una selecció;
  • el camp de text actiu;
  • el text visible de la pàgina.

Els suggeriments es poden aplicar directament en camps input i textarea.

Firefox

Per fer proves temporals:

  1. Obre about:debugging.
  2. Entra a This Firefox.
  3. Prem Load Temporary Add-on.
  4. Selecciona:
dist/claricat-firefox-unpacked/manifest.json

El paquet:

dist/claricat-firefox.zip

està preparat per validar-lo o enviar-lo a Mozilla Add-ons.

Firefox estable necessita una signatura de Mozilla per permetre una instal·lació permanent.

Vegeu:

docs/firefox.md

Microsoft Word

  1. Tanca Microsoft Word.
  2. Executa:
dist\installa-word.cmd
  1. Accepta l’elevació de permisos si Windows la demana.
  2. Obre Word.
  3. Entra a:
Inici > Complements > Avançat > Carpeta compartida > ClariCat

L’instal·lador:

  • registra un catàleg local de confiança;
  • neteja de manera recuperable la memòria cau antiga;
  • comprova que el servidor local estigui actiu.

El panell mostra:

  • l’estat del diccionari;
  • l’activació del recurs lingüístic auxiliar;
  • la configuració d’Ollama.

Ollama s’executa quan es prem Revisa selecció.

Mentre s’escriu, Word manté la revisió ràpida amb el motor de regles, el diccionari i el recurs lingüístic auxiliar.

Limitació d’Office.js

Office.js carrega office.js des del CDN oficial de Microsoft.

El motor de ClariCat i el text revisat continuen sent locals, però la plataforma del complement de Word no és completament independent d’Internet.

Vegeu:

docs/word.md

LibreOffice

  1. Instal·la:
dist/claricat-libreoffice-connector.oxt
  1. Reinicia LibreOffice.
  2. Arrenca el servidor local de ClariCat.
  3. Obre:
Eines > Opcions > Idiomes i regions > Servidor LanguageTool
  1. Activa el servidor.
  2. Introdueix:
http://127.0.0.1:8765/v2

El menú:

Eines > Complements > ClariCat

permet consultar l’estat del sistema i obrir la configuració dels recursos i d’Ollama.

Quan Ollama està activat per a LibreOffice, el servidor conserva durant cinc minuts les revisions repetides del mateix fragment per evitar càrrega innecessària.

Vegeu:

docs/libreoffice.md

Ollama i IA local

Ollama és una segona capa opcional. No és un requisit per al funcionament del corrector base.

Configuració inicial:

Adreça: http://127.0.0.1:11434
Model: salamandra
Activat: no

El prompt demana únicament correccions clares de català normatiu.

ClariCat intenta excloure:

  • reescriptures de to;
  • canvis purament estilístics;
  • recomanacions de concisió;
  • modificacions que no corregeixin un error clar.

El model ha de retornar una resposta JSON estructurada.

ClariCat comprova que:

  • el fragment original existeixi al text;
  • el canvi proposat no sigui idèntic;
  • la categoria sigui admesa;
  • l’avís no se solapi amb una detecció del motor principal.

Si Ollama no respon, la revisió base continua funcionant.

Vegeu:

docs/ollama.md

Regeneració de dades

Els fitxers necessaris per executar ClariCat i construir els connectors ja estan inclosos dins de data/.

Per tant, una tercera persona pot:

  • executar el corrector;
  • verificar el motor;
  • executar les proves;
  • construir els connectors;
  • inspeccionar els recursos distribuïts.

No necessita accés als sistemes interns de Fractalis per utilitzar la versió publicada de ClariCat.

Diccionari català

Entrada esperada:

third_party/catalan-dict-tools/resultats/lt/diccionari.txt

Regeneració:

npm run import:softcatala

L’importador:

  1. llegeix la primera columna;
  2. elimina duplicats;
  3. ordena les formes amb localització catalana;
  4. escriu el resultat a:
data/dictionaries/ca-softcatala-forms.txt

El fitxer generat inclou metadades d’origen i llicència.

Per actualitzar la font, cal obtenir:

Softcatala/catalan-dict-tools

i generar:

resultats/lt/diccionari.txt

segons les instruccions del projecte original.

Recurs lingüístic auxiliar derivat de Fractalis

ClariCat incorpora una exportació lingüística mínima preparada per funcionar offline.

Aquesta exportació forma part dels recursos distribuïts amb ClariCat.

No formen part del repositori:

  • el projecte complet Fractalis;
  • les fonts originals;
  • els processos interns de generació;
  • les dades internes no exportades;
  • l’estructura completa dels recursos d’origen.

Fractalis i els recursos originals són obra de Júlia Rosell Saldaña, que en conserva els drets.

La llicència de ClariCat haurà d’indicar explícitament quins permisos s’apliquen a l’exportació inclosa i quins elements continuen fora del projecte públic.

Proves i control de qualitat

Suite completa

npm test

Equivalent directe:

node --test tests\*.test.js

Conjunt inicial d’avaluació

npm run eval

Equivalent directe:

node tools\evaluate-corpus.js

Empaquetatge

npm run package

Equivalent directe:

powershell -ExecutionPolicy Bypass -File tools\package-all.ps1

Les proves cobreixen actualment:

  • el nucli;
  • el diccionari;
  • la protecció de placeholders;
  • els perfils dels connectors;
  • el recurs lingüístic auxiliar;
  • la CLI;
  • el format de resposta d’Ollama;
  • l’API local;
  • Microsoft Word;
  • la resposta compatible amb LibreOffice.

Les proves d’Ollama utilitzen una resposta simulada i no necessiten cap model instal·lat.

Paquets generats

L’ordre:

npm run package

recrea el directori dist/.

Fitxer Contingut o ús
claricat-browser-chrome-edge.zip Extensió per a Chrome i Edge
claricat-firefox.zip Paquet per validar o enviar a AMO
claricat-firefox-unpacked/ Versió per a proves temporals
claricat-office-word-manifest.xml Manifest del complement Office.js
claricat-office-word-addin.zip Word, servidor i recursos
claricat-libreoffice-connector.oxt Connector de LibreOffice
claricat-offline-runtime.zip Servidor complet per a Word, LibreOffice i API
arrenca-claricat-server.cmd Arrencada manual visible
ensure-claricat-server.cmd Arrencada en segon pla quan sigui necessària
installa-word.cmd Instal·lació del catàleg local de Word

El procés genera els ZIP:

  • amb separadors /;
  • sense rutes absolutes;
  • sense entrades ..;
  • amb compatibilitat entre Firefox, Office i LibreOffice.

Estructura del projecte

apps/
  browser-extension/   interfície, lectura de pàgina i Ollama al navegador
  cli/                 client de línia d’ordres
  libreoffice/         connector OXT i macros visibles
  office-addin/        manifest i panell de Word
  server/              API HTTP local i compatibilitat /v2

data/
  corpus/              conjunt inicial d’avaluació
  dictionaries/        diccionaris i metadades
  fractalis/           recurs lingüístic auxiliar exportat

docs/                  arquitectura, instal·lació, fonts i llicències
src/core/              motor i interfície de diccionari
tests/                 proves automatitzades
tools/                 importació, avaluació, instal·lació i empaquetatge
dist/                  artefactes generats, no fonts mestres

Privadesa

  • El motor base del navegador s’executa dins del complement.
  • Word i LibreOffice envien el text exclusivament al servidor local de ClariCat.
  • El servidor escolta per defecte només a 127.0.0.1.
  • ClariCat no envia text a LanguageTool.
  • ClariCat no envia text a una API remota pròpia.
  • Ollama està desactivat per defecte.
  • Quan Ollama s’activa, el text es lliura únicament a la instància local configurada.
  • Firefox declara els permisos necessaris per a l’ús opcional d’Ollama.
  • La configuració es desa localment a l’ordinador.

Consideracions de seguretat

Els endpoints locals permeten comunicació amb els connectors de navegador, Word i LibreOffice.

Abans d’una distribució estable cal continuar revisant:

  • la validació de l’encapçalament Origin;
  • la validació de l’encapçalament Host;
  • els orígens autoritzats per CORS;
  • la protecció dels endpoints que modifiquen la configuració;
  • la comunicació entre pàgines web i serveis locals;
  • el comportament davant peticions malformades o excessives.

Escoltar només a la interfície local redueix l’exposició, però no substitueix la validació dels clients i orígens autoritzats.

Llicències i autoria

  • ClariCat ha estat creat i és mantingut per Júlia Rosell Saldaña.
  • ClariCat no incorpora codi ni regles de LanguageTool.
  • El nucli i les regles actuals són codi propi del projecte.
  • Softcatala/catalan-dict-tools és la font de ca-softcatala-forms.txt i ca-softcatala-base.txt.
  • La llicència indicada per aquests recursos és LGPL-2.1-or-later OR GPL-2.0-or-later.
  • Hunspell és una referència tècnica i un format compatible.
  • ClariCat no empaqueta actualment la biblioteca Hunspell dins del runtime.
  • Fractalis és un projecte creat per Júlia Rosell Saldaña.
  • Els processos interns, les dades originals i els recursos no exportats de Fractalis no formen part del repositori públic de ClariCat.
  • IEC, DIEC, GEIEC, UOC, DEIEC i Projecte AINA s’han utilitzat com a fonts de consulta o s’han inventariat per a possibles fases futures.
  • No s’han copiat taules normatives ni contingut protegit dins del motor.

La llicència general de ClariCat encara s’ha de fixar en un fitxer:

LICENSE

Abans d’una distribució pública plenament replicable cal:

  1. seleccionar una llicència explícita per al codi;
  2. establir la llicència del recurs lingüístic auxiliar inclòs;
  3. comprovar la compatibilitat amb els paquets de dades;
  4. conservar les atribucions dels recursos de tercers;
  5. diferenciar clarament el codi de ClariCat, els recursos distribuïts i les fonts internes de Fractalis.

Mentre no hi hagi una llicència explícita, la presència del codi en un repositori públic no concedeix automàticament permís per modificar-lo o redistribuir-lo.

Vegeu:

docs/llicencies.md

Limitacions conegudes

  • ClariCat encara no disposa d’un analitzador morfològic i sintàctic complet.
  • La concordança profunda encara és limitada.
  • Falta un diccionari personal.
  • Falta una llista d’elements ignorats sincronitzada entre connectors.
  • El recurs derivat de Fractalis és auxiliar i no es considera una autoritat normativa.
  • Microsoft Word treballa principalment sobre la selecció.
  • El complement de Word mostra els resultats al panell i no substitueix el subratllat natiu de Word.
  • LibreOffice depèn de les capacitats del protocol compatible amb LanguageTool i de la versió instal·lada.
  • La lectura de webs no pot inspeccionar alguns iframes d’un altre origen.
  • La lectura de webs no pot interpretar contingut representat exclusivament en un canvas.
  • Alguns components web tancats poden quedar fora de l’abast del complement.
  • Firefox estable necessita una signatura de Mozilla.
  • Ollama pot ser lent segons el model i el maquinari.
  • Els resultats d’un model d’IA local poden ser incorrectes.
  • El conjunt d’avaluació encara és petit.
  • Els instal·ladors i scripts d’empaquetatge estan centrats actualment en Windows.
  • La configuració CORS i els endpoints locals necessiten més revisió abans d’una versió estable.

Prioritats de desenvolupament

Les prioritats principals són:

  • ampliar el conjunt de regles lingüístiques;
  • millorar els suggeriments;
  • incorporar més proves i contraexemples;
  • ampliar el conjunt d’avaluació;
  • reduir falsos positius;
  • aprofundir en la morfologia;
  • incorporar concordança sintàctica;
  • crear perfils dialectals;
  • afegir un diccionari personal;
  • sincronitzar preferències entre connectors;
  • reforçar la seguretat del servidor local;
  • millorar la instal·lació;
  • signar i distribuir els complements;
  • documentar millor la contribució de noves regles.

Criteris per contribuir o replicar

  • Mantén el motor base funcional sense xarxa.
  • Mantén Ollama com una capa opcional.
  • Afegeix almenys una prova per a cada regla nova.
  • Afegeix un contraexemple quan hi hagi risc de fals positiu.
  • No incorporis corpus, diccionaris o taules sense una llicència compatible i documentada.
  • Protegeix placeholders, variables i fragments tècnics abans d’aplicar el diccionari.
  • Prioritza l’ortografia als connectors.
  • Mantén les recomanacions d’estil com a funcions opcionals.
  • Documenta l’origen de qualsevol recurs extern.
  • No confonguis una font de consulta amb una font redistribuïble.
  • Conserva l’atribució de l’autoria original als documents, paquets i interfícies del projecte.
  • No presentis una bifurcació modificada com una versió oficial mantinguda per l’autora original.

Documentació

Avís sobre la fase alfa

ClariCat és un prototip funcional amb una base multiplataforma extensa, però continua en desenvolupament.

Pot detectar errors reals i oferir suggeriments útils, però també pot:

  • no detectar errors;
  • generar falsos positius;
  • proposar suggeriments inadequats;
  • comportar-se de manera diferent segons el connector;
  • dependre de característiques encara experimentals.

No s’ha de considerar encara una autoritat normativa ni una substitució completa d’una revisió humana o professional.

L’objectiu de la fase actual és consolidar una base local, modular, auditable i replicable sobre la qual es pugui continuar construint.

Ut alii vivant — perquè els altres visquin.

About

Corrector lliure, local, modular i multiplataforma de català, amb motor propi, API compatible amb LanguageTool i IA local opcional.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages