Oxi ロゴ Oxi

ブラウザだけで、Word と同じ見た目を。

Oxi は、Word 文書(.docx)をブラウザ上で Word そのままのレイアウトで表示・編集するためのオープンソースエンジンです。Rust + WebAssembly でゼロから実装し、再現度は実在の文書で Microsoft Word とページごとに照合。サーバーは使わず、ファイルは 1 バイトも外に出ません。

無料 · 登録不要 · 処理はすべてブラウザ内で完結

0.86
Word との SSIM — 日本語ブラインド
ベンチマーク(初見 50 文書)
0.87
Word との SSIM — 英語ブラインド
ベンチマーク(初見 50 文書)
100%
官公庁の実文書(.docx)での
パース成功率
0
アップロードは 0 バイト
処理はすべて手元のブラウザで

再現度は「主張」ではなく「実測」

ここに並ぶ数値はすべて、リポジトリで公開している測定パイプラインで誰でも再現できます。

技術記事: Wordの改ページ位置は、GDIの整数丸めで決まっている — Wordの量子化規則を実測し、Rustで再現した方法。

英語ブラインドセット — 初見の 50 文書

英語は最初から一番厳しい測り方をしています — 公開 docx-corpus から、修正のターゲットには一切使わない凍結ブラインドベンチ 50 文書。現行セットは blind-H50(種別ごとに未使用の次の SHA-256 順位、2026-10-02 に測定前凍結、規則は pipeline_data/FROZEN_BLIND_H.md)で、これがその唯一の測定です。英語で Oxi はピクセル 2 位(0.874) — ONLYOFFICE(0.918)に次ぎ、LibreOffice(0.858、50 文書中 32 文書で Oxi が Word に近い)を上回ります。Word とのページ数一致は Oxi 43/50、ONLYOFFICE 48/50、LibreOffice 42/50。増減したページを 0 点で数える penalized 平均は ONLYOFFICE 0.912、Oxi 0.845、LibreOffice 0.838、Polaris Office 0.792、GenOffice 0.737、SILURUS 0.726、eigenpal 0.671。真値は Microsoft Word(Microsoft 365 16.0.20430.20092)、比較対象は ONLYOFFICE 9.3.1.8、LibreOffice 26.8.0.3、Polaris Office 11.115、GenOffice 6a241c4、SILURUS @silurus/ooxml 0.86.1、eigenpal @eigenpal/docx-editor-react 1.9.0 — すべて 150 DPI。BetterOffice と OfficeCLI は今回の回では未完(ブラウザ描画中に測定機のメモリが尽きたため)。ブラインドは一度しか採点しないので、後から測って足すことはせず空欄のままにしています。

英語ブラインドセット — 初見の 50 文書、Word との文書平均 SSIM(2026-10-02)

ONLYOFFICEページ数一致 48/50 · v9.3.1.8
0.918
Oxiページ数一致 43/50
0.874
LibreOfficeページ数一致 42/50 · v26.8.0.3
0.858
Polaris Officeページ数一致 41/50 · v11.115 · 50 文書中 49 を描画
0.827
GenOfficeページ数一致 39/50 · v6a241c4
0.772
SILURUSページ数一致 35/50 · v0.86.1 · 50 文書中 48 を描画
0.762
eigenpalページ数一致 30/50 · v1.9.0
0.739
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ LibreOffice 優位 ↓ legal: Oxi 0.980 / LibreOffice 0.956 legal: Oxi 0.984 / LibreOffice 0.940 legal: Oxi 0.972 / LibreOffice 0.751 forms: Oxi 0.995 / LibreOffice 0.976 forms: Oxi 0.734 / LibreOffice 0.932 forms: Oxi 0.854 / LibreOffice 0.663 forms: Oxi 0.831 / LibreOffice 0.751 legal: Oxi 0.951 / LibreOffice 0.665 reports: Oxi 0.948 / LibreOffice 0.989 reports: Oxi 0.931 / LibreOffice 0.914 reports: Oxi 0.899 / LibreOffice 0.723 reports: Oxi 0.931 / LibreOffice 0.809 policies: Oxi 0.925 / LibreOffice 0.959 forms: Oxi 0.807 / LibreOffice 0.846 policies: Oxi 0.655 / LibreOffice 0.820 policies: Oxi 0.790 / LibreOffice 0.847 policies: Oxi 0.686 / LibreOffice 0.772 policies: Oxi 0.885 / LibreOffice 0.713 educational: Oxi 0.985 / LibreOffice 0.907 educational: Oxi 0.958 / LibreOffice 0.927 educational: Oxi 0.868 / LibreOffice 0.850 legal: Oxi 0.863 / LibreOffice 0.804 correspondence: Oxi 0.949 / LibreOffice 0.858 correspondence: Oxi 0.798 / LibreOffice 0.896 correspondence: Oxi 0.641 / LibreOffice 0.621 educational: Oxi 0.579 / LibreOffice 0.736 educational: Oxi 0.965 / LibreOffice 0.984 correspondence: Oxi 0.710 / LibreOffice 0.905 correspondence: Oxi 0.958 / LibreOffice 0.923 technical: Oxi 0.844 / LibreOffice 0.809 technical: Oxi 0.945 / LibreOffice 0.900 reports: Oxi 0.770 / LibreOffice 0.768 technical: Oxi 0.968 / LibreOffice 0.939 administrative: Oxi 0.744 / LibreOffice 0.867 administrative: Oxi 0.941 / LibreOffice 0.921 administrative: Oxi 0.953 / LibreOffice 0.939 administrative: Oxi 0.917 / LibreOffice 0.918 creative: Oxi 0.808 / LibreOffice 0.682 creative: Oxi 0.954 / LibreOffice 0.957 technical: Oxi 0.762 / LibreOffice 0.782 creative: Oxi 0.989 / LibreOffice 0.950 technical: Oxi 0.953 / LibreOffice 0.884 creative: Oxi 0.975 / LibreOffice 0.929 reference: Oxi 0.789 / LibreOffice 0.980 reference: Oxi 0.809 / LibreOffice 0.787 reference: Oxi 0.997 / LibreOffice 0.987 administrative: Oxi 0.923 / LibreOffice 0.922 creative: Oxi 0.912 / LibreOffice 0.719 reference: Oxi 0.877 / LibreOffice 0.911 reference: Oxi 0.815 / LibreOffice 0.920 vs LibreOffice — Oxi 優位 32/50 LibreOffice の SSIM(文書ごと) Oxi の SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ ONLYOFFICE 優位 ↓ legal: Oxi 0.980 / ONLYOFFICE 0.990 legal: Oxi 0.984 / ONLYOFFICE 0.943 legal: Oxi 0.972 / ONLYOFFICE 0.740 forms: Oxi 0.995 / ONLYOFFICE 0.997 forms: Oxi 0.734 / ONLYOFFICE 0.886 forms: Oxi 0.854 / ONLYOFFICE 0.908 forms: Oxi 0.831 / ONLYOFFICE 0.768 legal: Oxi 0.951 / ONLYOFFICE 0.937 reports: Oxi 0.948 / ONLYOFFICE 0.962 reports: Oxi 0.931 / ONLYOFFICE 0.928 reports: Oxi 0.899 / ONLYOFFICE 0.953 reports: Oxi 0.931 / ONLYOFFICE 0.910 policies: Oxi 0.925 / ONLYOFFICE 0.991 forms: Oxi 0.807 / ONLYOFFICE 0.925 policies: Oxi 0.655 / ONLYOFFICE 0.839 policies: Oxi 0.790 / ONLYOFFICE 0.828 policies: Oxi 0.686 / ONLYOFFICE 0.984 policies: Oxi 0.885 / ONLYOFFICE 0.948 educational: Oxi 0.985 / ONLYOFFICE 0.989 educational: Oxi 0.958 / ONLYOFFICE 0.979 educational: Oxi 0.868 / ONLYOFFICE 0.959 legal: Oxi 0.863 / ONLYOFFICE 0.809 correspondence: Oxi 0.949 / ONLYOFFICE 0.967 correspondence: Oxi 0.798 / ONLYOFFICE 0.802 correspondence: Oxi 0.641 / ONLYOFFICE 0.663 educational: Oxi 0.579 / ONLYOFFICE 0.975 educational: Oxi 0.965 / ONLYOFFICE 0.987 correspondence: Oxi 0.710 / ONLYOFFICE 0.971 correspondence: Oxi 0.958 / ONLYOFFICE 0.965 technical: Oxi 0.844 / ONLYOFFICE 0.799 technical: Oxi 0.945 / ONLYOFFICE 0.956 reports: Oxi 0.770 / ONLYOFFICE 0.770 technical: Oxi 0.968 / ONLYOFFICE 0.988 administrative: Oxi 0.744 / ONLYOFFICE 0.976 administrative: Oxi 0.941 / ONLYOFFICE 0.950 administrative: Oxi 0.953 / ONLYOFFICE 0.964 administrative: Oxi 0.917 / ONLYOFFICE 0.937 creative: Oxi 0.808 / ONLYOFFICE 0.851 creative: Oxi 0.954 / ONLYOFFICE 0.986 technical: Oxi 0.762 / ONLYOFFICE 0.839 creative: Oxi 0.989 / ONLYOFFICE 0.975 technical: Oxi 0.953 / ONLYOFFICE 0.848 creative: Oxi 0.975 / ONLYOFFICE 0.985 reference: Oxi 0.789 / ONLYOFFICE 0.790 reference: Oxi 0.809 / ONLYOFFICE 0.969 reference: Oxi 0.997 / ONLYOFFICE 0.994 administrative: Oxi 0.923 / ONLYOFFICE 0.938 creative: Oxi 0.912 / ONLYOFFICE 0.981 reference: Oxi 0.877 / ONLYOFFICE 0.951 reference: Oxi 0.815 / ONLYOFFICE 0.963 vs ONLYOFFICE — Oxi 優位 11/50 ONLYOFFICE の SSIM(文書ごと) Oxi の SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ SILURUS 優位 ↓ legal: Oxi 0.980 / SILURUS 0.816 legal: Oxi 0.984 / SILURUS 0.950 legal: Oxi 0.972 / SILURUS 0.706 forms: Oxi 0.995 / SILURUS 0.887 forms: Oxi 0.734 / SILURUS 0.785 forms: Oxi 0.854 / SILURUS 0.647 forms: Oxi 0.831 / SILURUS 0.730 legal: Oxi 0.951 / SILURUS 0.650 reports: Oxi 0.948 / SILURUS 0.760 reports: Oxi 0.931 / SILURUS 0.647 reports: Oxi 0.899 / SILURUS 0.729 reports: Oxi 0.931 / SILURUS 0.702 policies: Oxi 0.925 / SILURUS 0.885 forms: Oxi 0.807 / SILURUS 0.723 policies: Oxi 0.655 / SILURUS 0.614 policies: Oxi 0.790 / SILURUS 0.771 policies: Oxi 0.686 / SILURUS 0.686 policies: Oxi 0.885 / SILURUS 0.621 educational: Oxi 0.985 / SILURUS 0.962 educational: Oxi 0.958 / SILURUS 0.739 educational: Oxi 0.868 / SILURUS 0.738 legal: Oxi 0.863 / SILURUS 0.801 correspondence: Oxi 0.949 / SILURUS 0.670 correspondence: Oxi 0.798 / SILURUS 0.685 correspondence: Oxi 0.641 / SILURUS 0.640 educational: Oxi 0.579 / SILURUS 0.790 educational: Oxi 0.965 / SILURUS 0.851 correspondence: Oxi 0.710 / SILURUS 0.695 correspondence: Oxi 0.958 / SILURUS 0.774 technical: Oxi 0.844 / SILURUS 0.772 technical: Oxi 0.945 / SILURUS 0.684 reports: Oxi 0.770 / SILURUS 0.765 technical: Oxi 0.968 / SILURUS 0.878 administrative: Oxi 0.744 / SILURUS 0.801 administrative: Oxi 0.941 / SILURUS 0.929 administrative: Oxi 0.953 / SILURUS 0.863 administrative: Oxi 0.917 / SILURUS 0.739 creative: Oxi 0.808 / SILURUS 0.624 creative: Oxi 0.954 / SILURUS 0.846 technical: Oxi 0.762 / SILURUS 0.750 creative: Oxi 0.989 / SILURUS 0.904 technical: Oxi 0.953 / SILURUS 0.780 creative: Oxi 0.975 / SILURUS 0.872 reference: Oxi 0.789 / SILURUS 0.789 reference: Oxi 0.997 / SILURUS 0.955 administrative: Oxi 0.923 / SILURUS 0.695 creative: Oxi 0.912 / SILURUS 0.663 reference: Oxi 0.877 / SILURUS 0.603 vs SILURUS — Oxi 優位 43/48 SILURUS の SSIM(文書ごと) Oxi の SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ eigenpal 優位 ↓ legal: Oxi 0.980 / eigenpal 0.687 legal: Oxi 0.984 / eigenpal 0.944 legal: Oxi 0.972 / eigenpal 0.674 forms: Oxi 0.995 / eigenpal 0.882 forms: Oxi 0.734 / eigenpal 0.724 forms: Oxi 0.854 / eigenpal 0.579 forms: Oxi 0.831 / eigenpal 0.697 legal: Oxi 0.951 / eigenpal 0.649 reports: Oxi 0.948 / eigenpal 0.707 reports: Oxi 0.931 / eigenpal 0.595 reports: Oxi 0.899 / eigenpal 0.820 reports: Oxi 0.931 / eigenpal 0.628 policies: Oxi 0.925 / eigenpal 0.840 forms: Oxi 0.807 / eigenpal 0.716 policies: Oxi 0.655 / eigenpal 0.667 policies: Oxi 0.790 / eigenpal 0.705 policies: Oxi 0.686 / eigenpal 0.682 policies: Oxi 0.885 / eigenpal 0.603 educational: Oxi 0.985 / eigenpal 0.801 educational: Oxi 0.958 / eigenpal 0.669 educational: Oxi 0.868 / eigenpal 0.753 legal: Oxi 0.863 / eigenpal 0.788 correspondence: Oxi 0.949 / eigenpal 0.834 correspondence: Oxi 0.798 / eigenpal 0.721 correspondence: Oxi 0.641 / eigenpal 0.580 educational: Oxi 0.579 / eigenpal 0.702 educational: Oxi 0.965 / eigenpal 0.766 correspondence: Oxi 0.710 / eigenpal 0.742 correspondence: Oxi 0.958 / eigenpal 0.756 technical: Oxi 0.844 / eigenpal 0.770 technical: Oxi 0.945 / eigenpal 0.621 reports: Oxi 0.770 / eigenpal 0.774 technical: Oxi 0.968 / eigenpal 0.730 administrative: Oxi 0.744 / eigenpal 0.721 administrative: Oxi 0.941 / eigenpal 0.899 administrative: Oxi 0.953 / eigenpal 0.827 administrative: Oxi 0.917 / eigenpal 0.724 creative: Oxi 0.808 / eigenpal 0.669 creative: Oxi 0.954 / eigenpal 0.889 technical: Oxi 0.762 / eigenpal 0.726 creative: Oxi 0.989 / eigenpal 0.852 technical: Oxi 0.953 / eigenpal 0.760 creative: Oxi 0.975 / eigenpal 0.906 reference: Oxi 0.789 / eigenpal 0.777 reference: Oxi 0.809 / eigenpal 0.765 reference: Oxi 0.997 / eigenpal 0.969 administrative: Oxi 0.923 / eigenpal 0.675 creative: Oxi 0.912 / eigenpal 0.633 reference: Oxi 0.877 / eigenpal 0.591 reference: Oxi 0.815 / eigenpal 0.775 vs eigenpal — 49 文書中 43 文書で Oxi 優位 eigenpal SSIM(文書ごと) Oxi SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ GenOffice 優位 ↓ legal: Oxi 0.980 / GenOffice 0.911 legal: Oxi 0.984 / GenOffice 0.932 legal: Oxi 0.972 / GenOffice 0.693 forms: Oxi 0.995 / GenOffice 0.968 forms: Oxi 0.734 / GenOffice 0.719 forms: Oxi 0.854 / GenOffice 0.604 forms: Oxi 0.831 / GenOffice 0.724 legal: Oxi 0.951 / GenOffice 0.643 reports: Oxi 0.948 / GenOffice 0.740 reports: Oxi 0.931 / GenOffice 0.616 reports: Oxi 0.899 / GenOffice 0.696 reports: Oxi 0.931 / GenOffice 0.807 policies: Oxi 0.925 / GenOffice 0.895 forms: Oxi 0.807 / GenOffice 0.708 policies: Oxi 0.655 / GenOffice 0.679 policies: Oxi 0.790 / GenOffice 0.713 policies: Oxi 0.686 / GenOffice 0.674 policies: Oxi 0.885 / GenOffice 0.664 educational: Oxi 0.985 / GenOffice 0.912 educational: Oxi 0.958 / GenOffice 0.732 educational: Oxi 0.868 / GenOffice 0.763 legal: Oxi 0.863 / GenOffice 0.801 correspondence: Oxi 0.949 / GenOffice 0.917 correspondence: Oxi 0.798 / GenOffice 0.705 correspondence: Oxi 0.641 / GenOffice 0.556 educational: Oxi 0.579 / GenOffice 0.711 educational: Oxi 0.965 / GenOffice 0.794 correspondence: Oxi 0.710 / GenOffice 0.781 correspondence: Oxi 0.958 / GenOffice 0.779 technical: Oxi 0.844 / GenOffice 0.761 technical: Oxi 0.945 / GenOffice 0.635 reports: Oxi 0.770 / GenOffice 0.760 technical: Oxi 0.968 / GenOffice 0.888 administrative: Oxi 0.744 / GenOffice 0.771 administrative: Oxi 0.941 / GenOffice 0.908 administrative: Oxi 0.953 / GenOffice 0.827 administrative: Oxi 0.917 / GenOffice 0.807 creative: Oxi 0.808 / GenOffice 0.751 creative: Oxi 0.954 / GenOffice 0.916 technical: Oxi 0.762 / GenOffice 0.788 creative: Oxi 0.989 / GenOffice 0.957 technical: Oxi 0.953 / GenOffice 0.757 creative: Oxi 0.975 / GenOffice 0.909 reference: Oxi 0.789 / GenOffice 0.780 reference: Oxi 0.809 / GenOffice 0.815 reference: Oxi 0.997 / GenOffice 0.972 administrative: Oxi 0.923 / GenOffice 0.767 creative: Oxi 0.912 / GenOffice 0.638 reference: Oxi 0.877 / GenOffice 0.639 reference: Oxi 0.815 / GenOffice 0.706 vs GenOffice — 50 文書中 38 文書で Oxi 優位 GenOffice SSIM(文書ごと) Oxi SSIM
上: エンジンごとの平均 — 右端の破線が Microsoft Word 自身(1.00)。SILURUS はアーキテクチャが最も近い競合(Oxi と同じく Rust + WebAssembly で Canvas に描画)、ONLYOFFICE と LibreOffice は成熟したネイティブスイート、BetterOffice(Rust + WebAssembly のエディタスイート)と eigenpal(ProseMirror ベースの DOM レンダラ、Apache-2.0)は 2026-07-27、GenOffice(Genspark の AI オフィススイート、Apache-2.0)は 2026-08-06 に比較に加わりました。各バーはそのバーに書かれたバージョンでの 2026-10-02 測定値で、いずれも同じ凍結グラウンドトゥルースに対して測定しています。下: 点 1 つが文書 1 件で、縦軸が Oxi。破線の対角線より上にある点が「Oxi のほうが Word に近い」文書です。ブラインドセットは「測定はするが修正対象にはしない」文書群なので、初見の実力がそのまま出ます — 負けている数字もそのまま公開しています。

日本語ブラインドセット — 初見の 50 文書

日本語も同じ厳しさで測ります。現行セットは jaBlind-H50(2026-10-02 に測定前凍結。公開マニフェストの日本語 technical は枯渇しているため、その 5 枠は事前に宣言した規則で他種別の次の順位から補充 — 5 本とも forms)。Oxi はピクセルで首位(0.857)で、Polaris Office(0.828)に 0.029、LibreOffice(0.807、50 文書中 41 文書で Oxi が Word に近い)に 0.050 の差。今回はページ数一致も最多です(41/50、ONLYOFFICE は 39/50)。エンジンの順位は言語で入れ替わります — ONLYOFFICE は英語 1 位・日本語 6 位 — これが言語ごとにブラインドを持つ理由です。過去 3 つの日本語セットは当時のエンジンで 0.842 / 0.802 / 0.802。3 週間と 1 世代後の本セットが初めて 0.85 を超えました — ただし 1 サンプルなので、例の ±0.02 がそのまま付きます。

日本語ブラインドセット — 初見の 50 文書、Word との文書平均 SSIM(2026-10-02)

Oxiページ数一致 41/50
0.857
Polaris Officeページ数一致 37/50 · v11.115 · 50 文書中 48 を描画
0.828
SILURUSページ数一致 34/50 · v0.86.1 · 50 文書中 47 を描画
0.819
LibreOfficeページ数一致 32/50 · v26.8.0.3
0.807
GenOfficeページ数一致 29/50 · v6a241c4 · 50 文書中 48 を描画
0.800
ONLYOFFICEページ数一致 39/50 · v9.3.1.8
0.787
eigenpalページ数一致 29/50 · v1.9.0 · 50 文書中 49 を描画
0.761
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ LibreOffice 優位 ↓ legal: Oxi 0.903 / LibreOffice 0.909 legal: Oxi 0.887 / LibreOffice 0.841 legal: Oxi 0.971 / LibreOffice 0.842 forms: Oxi 0.904 / LibreOffice 0.780 legal: Oxi 0.893 / LibreOffice 0.832 forms: Oxi 0.850 / LibreOffice 0.884 forms: Oxi 0.978 / LibreOffice 0.949 forms: Oxi 0.947 / LibreOffice 0.903 forms: Oxi 0.771 / LibreOffice 0.856 forms: Oxi 0.926 / LibreOffice 0.797 forms: Oxi 0.889 / LibreOffice 0.855 forms: Oxi 0.970 / LibreOffice 0.962 forms: Oxi 0.826 / LibreOffice 0.736 reports: Oxi 0.985 / LibreOffice 0.967 reports: Oxi 0.551 / LibreOffice 0.525 reports: Oxi 0.684 / LibreOffice 0.648 reports: Oxi 0.895 / LibreOffice 0.876 reports: Oxi 0.731 / LibreOffice 0.732 policies: Oxi 0.860 / LibreOffice 0.792 forms: Oxi 0.778 / LibreOffice 0.754 policies: Oxi 0.932 / LibreOffice 0.840 policies: Oxi 0.947 / LibreOffice 0.830 educational: Oxi 0.893 / LibreOffice 0.780 educational: Oxi 0.981 / LibreOffice 0.935 educational: Oxi 0.943 / LibreOffice 0.801 educational: Oxi 0.803 / LibreOffice 0.736 educational: Oxi 0.678 / LibreOffice 0.652 correspondence: Oxi 0.818 / LibreOffice 0.687 correspondence: Oxi 0.773 / LibreOffice 0.774 correspondence: Oxi 0.957 / LibreOffice 0.950 correspondence: Oxi 0.989 / LibreOffice 0.981 correspondence: Oxi 0.696 / LibreOffice 0.777 policies: Oxi 0.961 / LibreOffice 0.924 administrative: Oxi 0.983 / LibreOffice 0.913 administrative: Oxi 0.765 / LibreOffice 0.850 administrative: Oxi 0.967 / LibreOffice 0.819 administrative: Oxi 0.791 / LibreOffice 0.706 administrative: Oxi 0.795 / LibreOffice 0.731 creative: Oxi 0.910 / LibreOffice 0.881 creative: Oxi 0.980 / LibreOffice 0.950 creative: Oxi 0.745 / LibreOffice 0.644 creative: Oxi 0.630 / LibreOffice 0.584 reference: Oxi 0.806 / LibreOffice 0.869 creative: Oxi 0.932 / LibreOffice 0.784 reference: Oxi 0.863 / LibreOffice 0.871 reference: Oxi 0.966 / LibreOffice 0.874 reference: Oxi 0.901 / LibreOffice 0.740 reference: Oxi 0.864 / LibreOffice 0.711 policies: Oxi 0.820 / LibreOffice 0.796 legal: Oxi 0.578 / LibreOffice 0.526 vs LibreOffice — Oxi 優位 41/50 LibreOffice の SSIM(文書ごと) Oxi の SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ ONLYOFFICE 優位 ↓ legal: Oxi 0.903 / ONLYOFFICE 0.882 legal: Oxi 0.887 / ONLYOFFICE 0.828 legal: Oxi 0.971 / ONLYOFFICE 0.814 forms: Oxi 0.904 / ONLYOFFICE 0.777 legal: Oxi 0.893 / ONLYOFFICE 0.828 forms: Oxi 0.850 / ONLYOFFICE 0.734 forms: Oxi 0.978 / ONLYOFFICE 0.911 forms: Oxi 0.947 / ONLYOFFICE 0.885 forms: Oxi 0.771 / ONLYOFFICE 0.590 forms: Oxi 0.926 / ONLYOFFICE 0.758 forms: Oxi 0.889 / ONLYOFFICE 0.866 forms: Oxi 0.970 / ONLYOFFICE 0.915 forms: Oxi 0.826 / ONLYOFFICE 0.729 reports: Oxi 0.985 / ONLYOFFICE 0.973 reports: Oxi 0.551 / ONLYOFFICE 0.500 reports: Oxi 0.684 / ONLYOFFICE 0.664 reports: Oxi 0.895 / ONLYOFFICE 0.867 reports: Oxi 0.731 / ONLYOFFICE 0.735 policies: Oxi 0.860 / ONLYOFFICE 0.840 forms: Oxi 0.778 / ONLYOFFICE 0.746 policies: Oxi 0.932 / ONLYOFFICE 0.825 policies: Oxi 0.947 / ONLYOFFICE 0.736 educational: Oxi 0.893 / ONLYOFFICE 0.748 educational: Oxi 0.981 / ONLYOFFICE 0.915 educational: Oxi 0.943 / ONLYOFFICE 0.756 educational: Oxi 0.803 / ONLYOFFICE 0.679 educational: Oxi 0.678 / ONLYOFFICE 0.769 correspondence: Oxi 0.818 / ONLYOFFICE 0.693 correspondence: Oxi 0.773 / ONLYOFFICE 0.755 correspondence: Oxi 0.957 / ONLYOFFICE 0.861 correspondence: Oxi 0.989 / ONLYOFFICE 0.965 correspondence: Oxi 0.696 / ONLYOFFICE 0.739 policies: Oxi 0.961 / ONLYOFFICE 0.885 administrative: Oxi 0.983 / ONLYOFFICE 0.909 administrative: Oxi 0.765 / ONLYOFFICE 0.767 administrative: Oxi 0.967 / ONLYOFFICE 0.780 administrative: Oxi 0.791 / ONLYOFFICE 0.689 administrative: Oxi 0.795 / ONLYOFFICE 0.681 creative: Oxi 0.910 / ONLYOFFICE 0.866 creative: Oxi 0.980 / ONLYOFFICE 0.936 creative: Oxi 0.745 / ONLYOFFICE 0.908 creative: Oxi 0.630 / ONLYOFFICE 0.581 reference: Oxi 0.806 / ONLYOFFICE 0.869 creative: Oxi 0.932 / ONLYOFFICE 0.781 reference: Oxi 0.863 / ONLYOFFICE 0.873 reference: Oxi 0.966 / ONLYOFFICE 0.858 reference: Oxi 0.901 / ONLYOFFICE 0.710 reference: Oxi 0.864 / ONLYOFFICE 0.647 policies: Oxi 0.820 / ONLYOFFICE 0.734 legal: Oxi 0.578 / ONLYOFFICE 0.574 vs ONLYOFFICE — Oxi 優位 43/50 ONLYOFFICE の SSIM(文書ごと) Oxi の SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ SILURUS 優位 ↓ legal: Oxi 0.903 / SILURUS 0.950 legal: Oxi 0.887 / SILURUS 0.820 legal: Oxi 0.971 / SILURUS 0.833 forms: Oxi 0.904 / SILURUS 0.765 legal: Oxi 0.893 / SILURUS 0.867 forms: Oxi 0.850 / SILURUS 0.764 forms: Oxi 0.978 / SILURUS 0.951 forms: Oxi 0.947 / SILURUS 0.833 forms: Oxi 0.771 / SILURUS 0.653 forms: Oxi 0.926 / SILURUS 0.798 forms: Oxi 0.889 / SILURUS 0.851 forms: Oxi 0.970 / SILURUS 0.951 forms: Oxi 0.826 / SILURUS 0.824 reports: Oxi 0.985 / SILURUS 0.955 reports: Oxi 0.551 / SILURUS 0.509 reports: Oxi 0.684 / SILURUS 0.676 reports: Oxi 0.895 / SILURUS 0.874 reports: Oxi 0.731 / SILURUS 0.747 policies: Oxi 0.860 / SILURUS 0.799 forms: Oxi 0.778 / SILURUS 0.750 policies: Oxi 0.932 / SILURUS 0.837 policies: Oxi 0.947 / SILURUS 0.738 educational: Oxi 0.893 / SILURUS 0.819 educational: Oxi 0.981 / SILURUS 0.931 educational: Oxi 0.943 / SILURUS 0.813 correspondence: Oxi 0.818 / SILURUS 0.639 correspondence: Oxi 0.773 / SILURUS 0.768 correspondence: Oxi 0.957 / SILURUS 0.947 correspondence: Oxi 0.989 / SILURUS 0.978 correspondence: Oxi 0.696 / SILURUS 0.809 policies: Oxi 0.961 / SILURUS 0.907 administrative: Oxi 0.983 / SILURUS 0.941 administrative: Oxi 0.765 / SILURUS 0.796 administrative: Oxi 0.967 / SILURUS 0.903 administrative: Oxi 0.791 / SILURUS 0.849 administrative: Oxi 0.795 / SILURUS 0.709 creative: Oxi 0.910 / SILURUS 0.941 creative: Oxi 0.980 / SILURUS 0.951 creative: Oxi 0.745 / SILURUS 0.667 creative: Oxi 0.630 / SILURUS 0.654 reference: Oxi 0.806 / SILURUS 0.899 creative: Oxi 0.932 / SILURUS 0.788 reference: Oxi 0.863 / SILURUS 0.834 reference: Oxi 0.966 / SILURUS 0.882 reference: Oxi 0.901 / SILURUS 0.829 reference: Oxi 0.864 / SILURUS 0.703 policies: Oxi 0.820 / SILURUS 0.803 vs SILURUS — Oxi 優位 39/47 SILURUS の SSIM(文書ごと) Oxi の SSIM

日本語の図に BetterOffice 0.1.0 はありません。英語では完走しましたが、日本語では 1 文書目の出力すら返らず、未完走として扱いました。推定値は入れていません。

0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ eigenpal 優位 ↓ legal: Oxi 0.903 / eigenpal 0.776 legal: Oxi 0.887 / eigenpal 0.728 legal: Oxi 0.971 / eigenpal 0.799 forms: Oxi 0.904 / eigenpal 0.713 legal: Oxi 0.893 / eigenpal 0.787 forms: Oxi 0.850 / eigenpal 0.749 forms: Oxi 0.978 / eigenpal 0.909 forms: Oxi 0.947 / eigenpal 0.830 forms: Oxi 0.771 / eigenpal 0.577 forms: Oxi 0.926 / eigenpal 0.761 forms: Oxi 0.889 / eigenpal 0.839 forms: Oxi 0.970 / eigenpal 0.911 forms: Oxi 0.826 / eigenpal 0.753 reports: Oxi 0.985 / eigenpal 0.949 reports: Oxi 0.551 / eigenpal 0.486 reports: Oxi 0.684 / eigenpal 0.667 reports: Oxi 0.895 / eigenpal 0.852 reports: Oxi 0.731 / eigenpal 0.722 policies: Oxi 0.860 / eigenpal 0.753 forms: Oxi 0.778 / eigenpal 0.719 policies: Oxi 0.932 / eigenpal 0.817 policies: Oxi 0.947 / eigenpal 0.706 educational: Oxi 0.893 / eigenpal 0.732 educational: Oxi 0.981 / eigenpal 0.873 educational: Oxi 0.943 / eigenpal 0.739 educational: Oxi 0.803 / eigenpal 0.680 educational: Oxi 0.678 / eigenpal 0.638 correspondence: Oxi 0.818 / eigenpal 0.650 correspondence: Oxi 0.773 / eigenpal 0.754 correspondence: Oxi 0.957 / eigenpal 0.853 correspondence: Oxi 0.989 / eigenpal 0.962 correspondence: Oxi 0.696 / eigenpal 0.740 policies: Oxi 0.961 / eigenpal 0.876 administrative: Oxi 0.983 / eigenpal 0.903 administrative: Oxi 0.765 / eigenpal 0.753 administrative: Oxi 0.967 / eigenpal 0.767 administrative: Oxi 0.791 / eigenpal 0.670 administrative: Oxi 0.795 / eigenpal 0.631 creative: Oxi 0.910 / eigenpal 0.852 creative: Oxi 0.980 / eigenpal 0.928 creative: Oxi 0.745 / eigenpal 0.624 creative: Oxi 0.630 / eigenpal 0.555 reference: Oxi 0.806 / eigenpal 0.866 creative: Oxi 0.932 / eigenpal 0.738 reference: Oxi 0.863 / eigenpal 0.849 reference: Oxi 0.966 / eigenpal 0.863 reference: Oxi 0.901 / eigenpal 0.615 reference: Oxi 0.864 / eigenpal 0.658 policies: Oxi 0.820 / eigenpal 0.731 vs eigenpal — 50 文書中 45 文書で Oxi 優位 eigenpal SSIM(文書ごと) Oxi SSIM
0.4 0.4 0.6 0.6 0.8 0.8 1.0 1.0 Oxi 優位 ↑ GenOffice 優位 ↓ legal: Oxi 0.903 / GenOffice 0.941 legal: Oxi 0.887 / GenOffice 0.736 legal: Oxi 0.971 / GenOffice 0.833 forms: Oxi 0.904 / GenOffice 0.708 legal: Oxi 0.893 / GenOffice 0.805 forms: Oxi 0.850 / GenOffice 0.720 forms: Oxi 0.978 / GenOffice 0.937 forms: Oxi 0.947 / GenOffice 0.934 forms: Oxi 0.771 / GenOffice 0.571 forms: Oxi 0.926 / GenOffice 0.787 forms: Oxi 0.889 / GenOffice 0.827 forms: Oxi 0.970 / GenOffice 0.967 forms: Oxi 0.826 / GenOffice 0.786 reports: Oxi 0.985 / GenOffice 0.974 reports: Oxi 0.551 / GenOffice 0.505 reports: Oxi 0.684 / GenOffice 0.671 reports: Oxi 0.895 / GenOffice 0.825 reports: Oxi 0.731 / GenOffice 0.715 policies: Oxi 0.860 / GenOffice 0.804 forms: Oxi 0.778 / GenOffice 0.711 policies: Oxi 0.932 / GenOffice 0.858 policies: Oxi 0.947 / GenOffice 0.853 educational: Oxi 0.893 / GenOffice 0.764 educational: Oxi 0.981 / GenOffice 0.924 educational: Oxi 0.943 / GenOffice 0.799 educational: Oxi 0.803 / GenOffice 0.720 educational: Oxi 0.678 / GenOffice 0.654 correspondence: Oxi 0.818 / GenOffice 0.634 correspondence: Oxi 0.773 / GenOffice 0.753 correspondence: Oxi 0.957 / GenOffice 0.909 correspondence: Oxi 0.989 / GenOffice 0.981 correspondence: Oxi 0.696 / GenOffice 0.759 policies: Oxi 0.961 / GenOffice 0.917 administrative: Oxi 0.983 / GenOffice 0.939 administrative: Oxi 0.765 / GenOffice 0.782 administrative: Oxi 0.967 / GenOffice 0.883 administrative: Oxi 0.791 / GenOffice 0.707 administrative: Oxi 0.795 / GenOffice 0.795 creative: Oxi 0.910 / GenOffice 0.887 creative: Oxi 0.980 / GenOffice 0.954 creative: Oxi 0.745 / GenOffice 0.698 creative: Oxi 0.630 / GenOffice 0.571 reference: Oxi 0.806 / GenOffice 0.883 creative: Oxi 0.932 / GenOffice 0.797 reference: Oxi 0.863 / GenOffice 0.842 reference: Oxi 0.966 / GenOffice 0.907 reference: Oxi 0.901 / GenOffice 0.754 reference: Oxi 0.864 / GenOffice 0.698 vs GenOffice — 50 文書中 38 文書で Oxi 優位 GenOffice SSIM(文書ごと) Oxi SSIM
上: エンジンごとの平均 — 右端の破線が Microsoft Word 自身(1.00)。下: 点の 1 つ 1 つが 1 文書で、縦軸が Oxi。破線の対角線より上の点は、その文書で Oxi の方が Word に近かったことを意味します。ブラインドセットは測定するだけで修正対象にはしないため、これは「初見」の汎化性能をそのまま公開したものです。

PowerPoint ブラインドセット — 初見の 48 デッキ

同じ測定規律を .pptx にも適用しています。公開データセット noxneural/pptx_collection_templates から(取得前に宣言したシードで)無作為抽出した 50 デッキを、Microsoft PowerPoint 自身の描画と 150 DPI で照合 — どのエンジンでも開けない破損ファイル 2 件を除き 48 デッキ。初回測定 0.679(2026-08-13)から 1 週間のレンダラ改善で 0.953(2026-08-20)に到達し、LibreOffice(0.913・ペア差 +0.040 ± 0.005、|t| = 8.7、48 デッキ中 44 で Oxi 優位)と ONLYOFFICE(0.908)を上回りました。スライド数は 3 エンジンとも 48/48 で一致、48 デッキ全てが改善して後退ゼロ、最下位のデッキでも 0.880 です。

PPTX ブラインドセット — 初見の 48 デッキ、PowerPoint とのデッキ平均 SSIM(2026-08-20)

Oxiスライド数一致 48/48
0.953
LibreOfficeスライド数一致 48/48・v26.2.1.2
0.913
ONLYOFFICEスライド数一致 48/48・v9.3.1.8
0.908

Excel — 数式と VBA をブラウザで

.xlsx エンジンは依存グラフ型の数式エンジン(215 関数。実在の 285 ワークブックで Excel 自身のキャッシュ値と突き合わせて検証)と、ワークブックのマクロをブラウザで実行するクライアントサイド VBA ホストを備えています: Range / Worksheet / Workbook 操作、Sort、AutoFilter、Find、Copy/PasteSpecial、WorksheetFunction — 11 種のホストオブジェクトに 95 メンバ。それぞれ実物の Excel COM の挙動から導出し、82 本のスクリプト比較で検証しています。マクロによる編集は差分だけを書き戻し、元の ZIP は保持 — 無編集保存はバイト単位で同一です。

技術記事: VBA のオブジェクトの寿命を Rust の Drop で再現する — Excel とまったく同じタイミングで Class_Terminate を実行する仕組み。

なぜこの精度が出せるのか

  • 100% クリーンルーム実装:逆アセンブルやバイナリ解析は一切行いません。仕様の根拠は公開標準(OOXML — ISO/IEC 29500 / ECMA-376)と、COM API 経由で Word の出力値を観測するブラックボックス測定の 2 つだけです。
  • デュアルフォントエンジン:Word のレイアウトは GDI の整数ピクセル丸めを前提に組まれているため、.docx では GDI の振る舞いをそのまま再現。そのしがらみがない形式には DirectWrite の浮動小数メトリクスを使います。
  • 回帰ゲート:すべての変更を全コーパスで検証。改ページの一致、要素の位置、ピクセル SSIM を毎回確認してから取り込みます。

詳細と再現スクリプト: README — Layout Accuracy · docs/layout_accuracy.md

日本語組版を、中心に

多くの Word 互換レンダラーで後回しにされてきた日本語レイアウトこそ、Oxi の実測の中心です。測定コーパス自体が、日本語レイアウトが最も難しい文書群——省庁の規程、行政の申請様式、雇用契約書——でできています。

  • 禁則処理 — JIS X 4051 に沿った行分割。行頭・行末禁則、約物の詰め、ぶら下がり組み。
  • 縦書き — 右から左に流れる縦組み。縦中横にも対応。
  • ルビ(ふりがな)、割注、圏点(傍点)。
  • 文字グリッド(docGrid) — Word の行グリッド・字送りモデルを忠実に再現。
  • 判子 — 丸印・角印・小判型の電子印鑑生成と PAdES PDF 署名。

技術

Rust + WebAssembly、形式に依存しない中間表現、そしてサーバーゼロ。

なぜ今なのか

2026 年、フランス(DINUM 指令)、スイス(連邦事務局)、ドイツ(OpenDesk)など、欧州の公共部門は Microsoft Office 離れを本格化させています。そしてどの移行でも、最後に残るのは同じ問題です — 手元にある大量の .docx が、Word と同じ見た目で開けるかどうか。Oxi は Word 再現度を「約束」ではなく「継続的な実測」で示すことで、この問題そのものをなくすことを目指しています。

アーキテクチャ

  • 完全クライアントサイド:解析・レイアウト・描画・編集はブラウザ内の WebAssembly で実行。サーバー基盤もアップロードも不要です。
  • 形式に依存しない中間表現:Document → Page → Block (Paragraph | Table | Image) → Run。OOXML にも ODF にも寄せていないので、往復変換で劣化しません。
  • ラウンドトリップ編集:元の ZIP を保持し、変更した XML テキストノードだけをパッチ。ファイルをゼロから作り直すことはしません。
  • 同梱フォントはオープンライセンスのみ:メトリクス互換のオープンフォントを使用し、プロプライエタリフォントは同梱しません。
  • 組み込み可能:wasm-bindgen の JavaScript API(parse_document、layout_document、edit_docx など)を任意の Web アプリから呼び出せます。

ライセンス

コアエンジンは MPL-2.0(ファイル単位コピーレフト。AGPL と違い、商用製品への組み込みも可能です)。WebAssembly / Python バインディングは MIT OR Apache-2.0。コントリビューションは DCO のみで CLA はありません。

よくある質問

無料で使えますか?

はい。オープンソース(コア MPL-2.0、バインディング MIT OR Apache-2.0)で、Web デモは登録不要・無料です。

ファイルはサーバーに送信されますか?

されません。処理はすべてブラウザ内の WebAssembly で完結し、ファイルが外部に送られることはありません。機密文書でも安心して使えます。

Word とどれくらい同じ見た目になりますか?

修正のターゲットには使わない初見文書だけの凍結ブラインドベンチマークで、Word とピクセル単位の SSIM を測定しています。英語 blind-H50(2026-10-02 凍結・測定)で Oxi は文書平均 0.874、Word とのページ数一致は 50 文書中 43。ピクセルでは ONLYOFFICE が上(0.918、48/50)、LibreOffice が下(0.858、42/50)。日本語 blind-H50 では Oxi が 0.857 で Polaris Office(0.828)と LibreOffice(0.807)を上回り、ページ数一致も最多(41/50)です。エンジンの順位は言語によって入れ替わるため、言語ごとにブラインドセットを持っています。 比較チャートと方法は精度の節を参照。

対応している形式は?

まずは Word の .docx です。ページレイアウトの完全再現とラウンドトリップ編集に集中しています。「Word の .docx 描画を忠実に再現する」ことが Oxi のミッションで、対応形式を広げるのはその先です。

自社製品に組み込めますか?

組み込めます。コアはファイル単位コピーレフトの MPL-2.0、バインディングは MIT OR Apache-2.0 なので、AGPL 系と違い商用・プロプライエタリ製品にも組み込めます。

オフラインでも動きますか?

ページと WebAssembly モジュールを読み込んだあとは、文書の表示も編集もネットワークなしで動きます。