Text inside a Word text box is not indexed
まだ誰も着手していません。
評価
調査の方向性
Start with api/core/rag/extractor/word_extractor.py, especially WordExtractor.parse_docx, and review the fix with tests already open in issue #42334. Run the relevant extractor tests and verify that text from Word text boxes appears once in reading order between surrounding paragraphs.
索引モデルが issue の本文から書いたものです。
説明
Self Checks
- I have read the Contributing Guide and Language Policy.
- This is only for bug report, if you would like to ask a question, please head to Discussions.
- I have searched for existing issues search for existing issues, including closed ones.
- I confirm that I am using English to submit this report, otherwise it will be closed.
- 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
- Please do not modify this template :) and fill in all the required fields.
Dify version
main (6a0039812d)
Cloud or Self Hosted
Self Hosted (Source)
Steps to reproduce
Upload a .docx to a knowledge base in which some text sits in a text box — a callout, a pull quote, a sidebar, a label drawn over a diagram. Word writes a text box as a drawing inside a run, with its own paragraphs under w:txbxContent.
api/core/rag/extractor/word_extractor.py (WordExtractor.parse_docx) walks each paragraph's direct children for w:r and w:hyperlink, and a run contributes Run.text. python-docx builds Run.text from the run's direct w:t children only, so the paragraphs inside w:txbxContent are never visited.
A document whose first paragraph anchors a text box reading CALLOUT, followed by a paragraph AFTER:
>>> WordExtractor("textbox.docx", tenant_id, user_id).extract()[0].page_content
'PARAGRAPH TEXT\nAFTER'
The same result for both shapes Word writes: a bare wps:txbx, and the mc:AlternateContent form (a wps:txbx under mc:Choice plus a VML v:textbox under mc:Fallback), which is what Word itself saves.
✔️ Expected Behavior
The text box is part of the page, so its text is part of the document, in reading order and once:
'PARAGRAPH TEXT\nCALLOUT\nAFTER'
❌ Actual Behavior
The text box is dropped. Nothing fails and nothing is logged; the callout, quote or label is simply absent from the indexed content, so a question whose answer is in it retrieves nothing.
A fix with tests is open in #42334.
- 主要言語
- TypeScript
- スター
- 157k
- フォーク
- 24.7k
- 平均マージ
- 22時間 32分
- マージ済み PR(30日)
- 611
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
langgenius/dify のほかの issue
-
Annotation Reply: a stored score threshold of 0.0 is silently replaced with 1, disabling the feature オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42639 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
langgenius/dify#42468 · コメント 1 件 · リアクション 1 件 ·
-
🐞 bug
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
langgenius/dify#42446 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42355 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
langgenius/dify#42350 · コメント 1 件 · リアクション 1 件 ·
langgenius/dify の issue をすべて見る
似ている issue
-
calcite-components needs triage refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Esri/calcite-design-system#15203 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 91/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Automattic/studio#4908 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100