v0.4.2Release miroir de production — même commit que noplag.com aujourd'hui

Détecteur de plagiat open source.

Le seul outil de détection de plagiat proposant à la fois une offre cloud en production et un moteur entièrement open source. Le même code utilisé sur noplag.com est disponible sur GitHub à l'adresse github.com/NoplagLabs/noplag-engine — vous pouvez l'auditer, le dupliquer, l’auto-héberger.

github.com/NoplagLabs/noplag-engineApache 2.012,400 stars
LE RÉFÉRENCE

Le même commit que vous vérifiez sur noplag.com est celui sur GitHub.

Aucune ambiguïté « open source-ish ». Aucun dépôt limité au SDK avec le moteur en code fermé. Le découpeur, l’empreinteur, la cascade de récupération et l’assembleur de rapports sont tous dans le même dépôt Apache 2.0 qui construit notre conteneur de production.

noplag/enginePublic
Star12.4kFork892

Le moteur de détection de plagiat qui alimente noplag.com — découpage, empreintes winnowing, cascade de recherche, alignement et assemblage des rapports. Apache 2.0.

LANGAGE
Python · Rust
LICENCE
Apache 2.0
CONTRIBUTEURS
38
COMMITS
2,847
DERNIÈRE VERSION
v0.4.2 · il y a 3 jours
CI
ok · 412 tests
LE PARI

Le code fermé était un bug, pas une fonctionnalité.

Avant, chaque vérificateur de plagiat vous demandait de faire confiance à une boîte noire. Croyez au score. Faites confiance à la méthodologie que vous ne pouvez pas voir. Espérez que l’algorithme n’ait pas été réglé pour sur-détecter votre style d’écriture. Nous avons fait le pari inverse.

01

Ce que vous ne voyez pas, vous ne pouvez pas le vérifier

Un score de similarité est un nombre sans provenance attachée. Est-ce un chevauchement de phrase, une supposition de reformulation, une hallucination d’un détecteur IA ? Votre style d’écriture ESL a-t-il été pris en compte ? Les solutions fermées ne le diront pas — parce que leur avantage EST que vous ne pouvez pas demander. Nous n’acceptons pas cela comme prix de la détection du plagiat.

02

Produit open source, pas marketing open source

Le dépôt Apache 2.0 sur github.com/NoplagLabs/noplag-engine n'est pas un simple SDK client allégé avec l’algorithme de comparaison en code fermé. Le découpage, l’empreinte winnowing, la cascade de recherche, l’alignement, la déduplication et la génération des rapports sont tous intégrés dans le même conteneur Docker que celui utilisé sur noplag.com. L’offre cloud ajoute le corpus et les adaptateurs de recherche web, pas le moteur.

03

Ce que ça implique pour vous

Lisez l’algorithme avant de croire le score. Auto-hébergez le moteur sur votre propre infra si vos documents ne peuvent pas en sortir. Forkez si notre roadmap s’éloigne de la vôtre. Auditez comment les intervalles au niveau du chunk fusionnent en un score de similarité — et contestez publiquement si vous trouvez un bug.

L’ARCHITECTURE

Cascade de recherche à quatre couches. Schéma, pas une image.

Chaque couche réduit le groupe candidat avec un compromis coût/fiabilité. Chaque couche est dans le dépôt public. Le cloud ajoute le corpus + les adaptateurs web.

L1OUVERT

Empreintes winnowing

Overlap GIN indexé 64 bits sur colonnes bigint[] dans Postgres. Filtre des milliards de chunks candidats en top-K en O(log n) par requête.

latence~12ms / chunk
engine/retrieval/l1_winnowing.py
L2OUVERT

MinHash LSH — feuille de route v1.1

Jaccard approximatif pour détecter les paraphrases et copies légèrement modifiées, afin d’identifier ce que L1 ne repère pas après une réelle reformulation. Conçu, mais pas encore implémenté — absent du dépôt public.

latencev1.1
pas encore dans le dépôt public
L3OUVERT

Représentations de phrases — feuille de route v1.2

Vecteurs SBERT multilingues avec pgvector ANN, pour détecter les réécritures sémantiques et les copies entre langues. Conçu, mais pas encore implémenté — absent du dépôt public.

latencev1.2
pas encore dans le dépôt public
LWOUVERT

Vérification web en direct

Les adaptateurs Google + Brave vérifient en temps réel les N premiers candidats sur le web en direct. Fonctionne sur la couche cloud pour les offres payantes ; ces adaptateurs ne font pas partie du package open source.

latence~2,2s / doc
offre cloud — absent du dépôt public
v1.0 propose L1 + LW. L2 arrive avec v1.1. L3 avec v1.2. L’ordre de la cascade est paramétrable dans noplag.toml.
LE COEUR OUVERT

Ce qu’il y a vraiment dans le dépôt.

Pas un SDK, pas un client restreint. L’algorithme de détection complet — même agencement de package qu’en production.

engine/main
  • src/noplag_engine/le package
  • chunking/découpage phrase + sliding-window
  • fingerprinting/hashes winnowing 64 bits
  • retrieval/L1 disponible aujourd’hui ; L2 / L3 / LW pas encore inclus dans ce package
  • l1_winnowing.pytop-K overlap GIN
  • fingerprint_df.pystatistiques de fréquence de document
  • stop_list.pyfiltre d’empreintes non discriminantes
  • alignment/fusion d’intervalles par extension à partir de graines
  • workflows/Pipeline de vérification orchestré par Temporal
  • api/Interface HTTP FastAPI
  • reports/mise en surbrillance + export PDF
  • tests/412 tests · pytest + property + intégration
  • migrations/Migrations de schéma Alembic
  • Dockerfilemême image que la production
  • docker-compose.ymldémarrage rapide en auto-hébergement
  • LICENSEApache 2.0
  • README.mdarchitecture + démarrage rapide
CE QUI EST OUVERT
Découpage + fingerprintingtous les algorithmes, tous les seuils
Recherche L1 / L2 / L3scoring + logique d’indexation
Adaptateurs web liverate-limit + parsing + classement
Alignementseed-and-extend, fusion d’intervalles, dédoublonage
Assemblage des rapportsintervalles de surlignement, calcul de similarité
API HTTP + schémasmodèles Pydantic, routes FastAPI
RÉSERVÉ AU CLOUD
Le corpusOpenAlex + Common Crawl + Noplag Database (150M+ docs)
Clés API web-searchGoogle + Brave ; à fournir soi-même en auto-hébergement
Facturation + identitéStripe + Better Auth ; remplaçable en self-host
Postgres + Temporal managésHetzner + Coolify ops
  • 12.4kÉtoiles GitHub
  • 38contributeurs
  • 2,847commits
  • 412tests sur CI
  • 1:1parité cloud / repo
PISTE D’AUDIT

Trois choses qu’un vérificateur fermé ne peut pas vous laisser vérifier.

01 · L’ALGORITHME

Les solutions fermées donnent un chiffre. Le seuil entre « plagiat ou paraphrase », la pondération entre n-gram overlap et similarité sémantique, la manière dont les courts fragments sont exclus — tout cela reste en code fermé. Vous ne pouvez pas le reproduire, votre auditeur ne peut pas le vérifier, et il n’y a jamais de commit de référence à citer en cas de bug.

Ce que vous pouvez vérifier : chaque seuil, chaque poids, chaque règle de dédoublonage vit dans src/noplag_engine/. Sur GitHub, ouvrez un tag de release, trouvez le commit exact exécuté (rendu dans l’en-tête X-Engine-Commit), lisez-le ligne à ligne.

02 · LE PARCOURS DES DONNÉES

Où est allé votre document après l’envoi ? Stocké ? Ajouté à une base partagée accessible à un autre client ? Vendu à un tiers comme fournisseur de détection IA ? Les solutions fermées répondent en marketing. Mais elles ne vous montrent pas le code.

Ce que vous pouvez vérifier : le package workflows/ montre partout où une soumission est lue, hashée, persistée ou supprimée. Le dossier migrations/ montre chaque colonne concernée. Le package api/ montre ce qui sort du moteur sur le réseau — et où sortir dans un fork.

03 · LE SCORE DE SIMILARITÉ

Un score « 63% similaire » en boîte noire ne donne aucune provenance. 63% sur 12 courts fragments ? Un long paragraphe ? Problème de recherche ? Votre style d’écriture ESL modifie-t-il la pondération ? Le score arrive, mais la méthode reste opaque.

Ce que vous pouvez vérifier : alignment/ ouvre le merge seed-and-extend des intervalles. reports/ montre comment les correspondances par chunk produisent le pourcentage global. Vous pouvez relancer le document contre le même commit, inspecter chaque intervalle et contester le calcul publiquement sur GitHub.

CLOUD vs SELF-HOST

Deux manières d’exécuter le même moteur.

La plupart des utilisateurs choisissent la couche cloud sur noplag.com — Postgres, Temporal et Coolify gérés, corpus déjà indexé, adaptateurs de recherche web fournis avec des clés API valides. L’option auto-hébergée s’adresse aux organisations dont les documents ne peuvent pas sortir de leur infrastructure : clonez le dépôt, fournissez votre propre Postgres et Redis, connectez le moteur à votre corpus (ou importez OpenAlex + Common Crawl depuis notre manifeste), et configurez vos propres clés Google/Brave. Même moteur, mêmes algorithmes, même format de rapport — seule la limite opérationnelle change.

Lire le guide self-host
FAQ

Les vraies questions open source que nous recevons.

Le moteur tourne-t-il vraiment avec le même code que noplag.com ?
Oui. Le Dockerfile du dépôt construit l’image utilisée. À chaque vérif sur noplag.com, c’est ce commit qui tourne — le hash figure dans l’en-tête X-Engine-Commit pour épingler sur la release. Le cloud ajoute le corpus et les clés API web-search — pas un algorithme différent.
Pourquoi Apache 2.0 et pas AGPL ou BSL ?
Apache 2.0 permet aux organisations de s’auto-héberger sans lourdeur juridique. AGPL nous forcerait à une posture protectionniste, contraire à notre pari — on veut que les auditeurs et fork puissent l’utiliser. La partie défendable c’est le corpus et l’opérationnel, pas l’algorithme.
Puis-je tout auto-héberger sans cloud ?
Oui. Clonez le dépôt, lancez `docker compose up`, fournissez votre propre Postgres et Redis, puis importez le manifeste du corpus public (OpenAlex + Common Crawl + Wikipedia). Les adaptateurs Layer W sont modulaires — ajoutez vos propres clés API Google/Brave, ou ignorez Layer W si vous ne souhaitez que la comparaison sur corpus indexé.
Le Noplag Database (documents soumis par les utilisateurs) est-il open ?
Non. Noplag Database contient des soumissions utilisateurs et reste côté cloud — rendre Apache-2.0 les documents d’autrui serait évidemment incorrect. Par défaut les documents envoyés sont ajoutés ; vous pouvez vous désinscrire. Le code moteur qui cherche dans Noplag Database est open ; pas les données.
L’IA détecteur sera-t-il open aussi ?
Oui. La détection d’IA arrive bientôt — prévue dans la feuille de route v1.2, non disponible au lancement — et sera publiée en open source comme le reste : le câblage du modèle de perplexité, la calibration, l’ajustement du biais ESL et les bandes de verdict seront tous dans src/noplag_engine/ai_detection/. Les poids des modèles sont également open source (Qwen 2.5 1.5B 4-bit pour le niveau CPU, Mistral 7B en option pour le niveau GPU). Aucun détecteur tiers fermé dans le graphe d’appel.
Comment signaler un bug dans l’algorithme de matching ?
Ouvrez une issue publique GitHub avec un document minimal (ou décrivez le faux positif). Triage ouvert. Pour la sécurité : security@noplag.com.
Le cloud gardera-t-il toujours le même algo que le code open ?
Oui, c’est notre politique. Si nous devions un jour proposer un comportement réservé au cloud pour une expérimentation, il serait contrôlé par un feature flag avec une valeur par défaut open source ; l’algorithme de référence reste dans la branche principale. Si cela changeait, ce serait indiqué dans l’en-tête de réponse et dans les notes de version publiques.
Quel est le modèle de contribution ?
Issues et petites PR OK. Changements majeurs — nouvelle couche, autre corpus, nouvelle langue : discutez d’abord en issue RFC pour ouvrir la discussion d’archi. Pas de PR ajoutant dépendances fermées, télémétrie invasive, ou verrouillage fournisseur.
Un self-host hébergé existe-t-il ? (Apache 2.0 managé)
Pas encore. Le plan Entreprise sur le cloud offre infra dédiée et BYO-corpus, qui couvre la demande. Une offre self-host managée est sur la roadmap v1.2.
Quel impact sur les prix ?
Aucun. Le cloud est tarifé sur corpus + opérationnel (Hetzner + Coolify + Stripe + Lago + web-search API), pas sur licence moteur. Self-host gratuit. Cela restera ainsi.

Lisez l’algorithme. Puis faites-le tourner.

github.com/NoplagLabs/noplag-engine est sous licence Apache 2.0. Le cloud sur noplag.com exécute le même commit. Les deux options donnent accès au même moteur — choisissez la solution qui correspond à vos exigences de gestion des données.

Détecteur de plagiat open source — Moteur Apache 2.0 — Noplag