KDP用の原稿で文字化けと画像切れが同時に起きると、原因を一度に直したくなります。しかし、文字コードと画像パスは別の仕組みです。両方をまとめて変更すると、再出力が成功しても、どの修正が効いたのか分かりません。kdp 原稿の入稿前検査は「本文の復号」と「画像の参照」を二本の検査線に分けて進めます。
ここでは、Shift_JISからUTF-8/LFへ再読込した短い合成文と、3章・本文画像3件・表紙1件の固定EPUBを使います。破損データの完全復旧やKDPの受理判定ではなく、原稿を上書きする前に異常を見つけ、再現可能な形で直す手順が対象です。
原本を保護して二つの検査票を作る
最初に原本を複製し、開始時のファイル名、更新時刻、SHA-256を記録します。複製を「文字検査用」と「画像検査用」に分け、どちらも原本へ上書きしません。文字票には検出文字コード、改行、文字数、変換後の一致を記録します。画像票には章、Markdownの参照、XHTMLの src、EPUB内の収録名、欠落の有無を記録します。
二つの票を分ける理由は、戻り先を一つにするためです。文字が一致し、画像だけ欠けた場合は画像パスだけを直せます。画像がそろい、本文だけ違う場合は符号化の工程だけへ戻れます。合格済みの側を固定すると、修正の影響範囲が小さくなります。
文字コードは内容一致まで確認する
文字検査では、まず推定された符号と改行を読みます。表示が自然に見えるだけでUTF-8と決めず、検出結果を保存します。次にUTF-8/LFの別名ファイルとして変換し、閉じてから再度開きます。文字数と代表文を変換前後で比較し、同じ内容が復元されたことを確認します。
固定の補足試験では、Shift_JIS入力を検出し、合成標本をUTF-8/LFとして再読込できました。標本の本文は末尾改行を除いて34文字です。ファイル末尾にLFが1文字あるため、rune inspect textのcharacterCountはそれを含む35と表示しました。34は本文だけの数、35は末尾LFまで含む検査値であり、どちらも実際の原稿全体の文字数ではありません。本番では全体ハッシュだけでなく、機種依存文字やダッシュ、三点リーダーなど壊れやすい箇所を抽出して読みます。
Rune Studioの主要な日本語文字コード判定や変換不能文字の警告は、上書き前の確認に使えます。ただし今回の保存済み証拠は、誤復号した画面を目視してそのまま上書きする試験ではありません。警告の有無だけで内容一致を省略しないでください。
画像は参照元から収録先へ追う
画像検査では、画像フォルダを数える前に原稿側の参照を一覧にします。Markdownの相対パス、生成XHTMLの src、OPF manifestのhref、ZIP内の実ファイルを一列につなぎます。どこか一つでも名前や階層が違えば、その行は不合格です。
固定EPUBには3章があり、各章の本文画像3件と表紙1件の計4画像が収録されていました。XHTMLの画像参照も4件で、参照先の欠落は0件です。spineは7項目、navとNCXは各3件、ローカル検査は valid=true でした。表紙も画像参照の一つとして数えるため、本文中の画像数だけと混同しません。
文字を確定してから画像を直す
実作業では、先に文字票を完了させます。UTF-8/LFの別名保存を再読込し、代表文と文字数が一致したら、そのファイルを画像検査の入力として固定します。その後、画像票の不一致行だけを修正し、EPUBを新しい名前で出力します。
出力後はローカル検査の成否に加えて、3章のリンク、4画像の参照先、欠落0件を再取得します。さらに各画像を少なくとも一つの周辺見出しと組にして、別の章へ誤配置されていないか読みます。件数が4対4でも、第一章の図が第二章へ入っていれば内容上は不合格です。
症状から戻り先を決める
文字が � や意味不明な記号へ変わった場合は、画像設定へ触れず、元のバイト列と検出符号へ戻ります。改行だけが崩れた場合は、符号化と改行を別欄で比較します。画像が表示されない場合は、XHTMLの参照からZIP内の収録名まで追い、パスの大文字小文字も確認します。
画像は表示されるが別の図になった場合、欠落検査では捕まりません。参照先ファイルのSHAと、見出しに対する画像の意味を確認します。修正後は不合格版を消さず、文字側または画像側のどちらを変えたか記録します。これにより、同じ故障が再発したときに必要な線だけを再実行できます。
構造合格と見た目を同じ判定にしない
今回の固定証拠が示すのは、本文34文字と末尾LF 1文字からなるShift_JIS標本をUTF-8/LFで再読込し、変換前後のcharacterCountがとも35だったことです。加えて、固定EPUBで画像資源4件、参照4件、欠落0件、spine 7項目、nav・NCX各3件を確認しました。valid=true はローカル構造検査の結果で、KDP受理や全端末の表示を保証しません。
画像の実寸、トリミング、代替テキストの品質は別の目視・編集検査です。破損済みバイナリの復元、OCR、権利確認も対象外です。構造が合格しても、代表箇所を人が読み、画像を開く工程を残します。
二本の検査線がそろってから入稿する
引き渡し表には、文字側の入力SHA、検出符号、変換後SHA、改行、文字数、代表文の一致を残します。画像側には、各参照の章、元パス、収録名、出力SHA、欠落、内容確認を残します。最後に両方が同じ出力EPUBを指していることを確認してください。
文字だけ直した古いEPUBと、画像だけ直した別のEPUBを取り違える事故は、この最終照合で防げます。kdp 原稿を閉じて再度開き、代表文を一つ読み、各章から画像を一つ開き、欠落0件を再確認する。文字票と画像票が同じファイルで合格した時点を、入稿前検査の完了とします。

