diff --git a/docs/references/http_api_reference.md b/docs/references/http_api_reference.md index 1a88aa4836..c240bf0625 100644 --- a/docs/references/http_api_reference.md +++ b/docs/references/http_api_reference.md @@ -1104,7 +1104,6 @@ Success: "parser_config": { "chunk_token_num": 128, "delimiter": "\\n", - "html4excel": false, "layout_recognize": "DeepDOC" }, "run": "UNSTART", @@ -1229,9 +1228,7 @@ curl --request PATCH \ - If `"chunk_method"` is `"naive"`, the `"parser_config"` object contains the following attributes: - `"chunk_token_num"`: Defaults to `256`. - `"layout_recognize"`: Defaults to `"DeepDOC"`. - - `"html4excel"`: Indicates whether to convert Excel documents into HTML format. Defaults to `false`. - `"delimiter"`: Defaults to `"\n"`. - - `"task_page_size"`: Defaults to `12`. For PDF only. - `"enabled"`: (*Body parameter*), `integer` Whether the document should be **available** in the Dataset. - `1` → (available) @@ -1287,7 +1284,6 @@ Success: "auto_questions": 0, "topn_tags": 3, "layout_recognize": "DeepDOC", - "html4excel": false, "image_context_size": 0, "table_context_size": 0 }, @@ -1470,8 +1466,7 @@ Success: "parser_config": { "chunk_token_count": 128, "delimiter": "\n", - "layout_recognize": "DeepDOC", - "task_page_size": 12 + "layout_recognize": "DeepDOC" }, "chunk_method": "naive", "process_begin_at": null, @@ -1930,7 +1925,6 @@ Success: "parser_config": { "chunk_token_num": 128, "delimiter": "\\n", - "html4excel": false, "layout_recognize": "DeepDOC" }, "process_begin_at": "Thu, 24 Oct 2024 09:56:44 GMT", diff --git a/docs/references/python_api_reference.md b/docs/references/python_api_reference.md index f00a01d5b6..bae8dc180f 100644 --- a/docs/references/python_api_reference.md +++ b/docs/references/python_api_reference.md @@ -492,7 +492,7 @@ A dictionary representing the attributes to update, with the following keys: - `"email"`: Email - `"parser_config"`: `dict[str, Any]` The parsing configuration for the document. Its attributes vary based on the selected `"chunk_method"`: - `"chunk_method"`=`"naive"`: - `{"chunk_token_num":128,"delimiter":"\n","html4excel":False,"layout_recognize":"DeepDOC","raptor":{"use_raptor":False},"parent_child":{"use_parent_child":False,"children_delimiter":"\n"}}`. + `{"chunk_token_num":128,"delimiter":"\n","layout_recognize":"DeepDOC","raptor":{"use_raptor":False},"parent_child":{"use_parent_child":False,"children_delimiter":"\n"}}`. - `chunk_method`=`"qa"`: `{"raptor": {"use_raptor": False}}` - `chunk_method`=`"manual"`: @@ -662,7 +662,7 @@ A `Document` object contains the following attributes: - `status`: `string` Reserved for future use. - `parser_config`: `ParserConfig` Configuration object for the parser. Its attributes vary based on the selected `chunk_method`: - `chunk_method`=`"naive"`: - `{"chunk_token_num":128,"delimiter":"\n","html4excel":False,"layout_recognize":"DeepDOC","raptor":{"use_raptor":False}}`. + `{"chunk_token_num":128,"delimiter":"\n","layout_recognize":"DeepDOC","raptor":{"use_raptor":False}}`. - `chunk_method`=`"qa"`: `{"raptor": {"use_raptor": False}}` - `chunk_method`=`"manual"`: diff --git a/internal/common/parser_config.go b/internal/common/parser_config.go index 4dc93c0b6d..f0d235eca7 100644 --- a/internal/common/parser_config.go +++ b/internal/common/parser_config.go @@ -66,7 +66,6 @@ func GetParserConfig(parserID string, parserConfig map[string]interface{}) map[s "delimiter": "\n", "auto_keywords": 0, "auto_questions": 0, - "html4excel": false, "topn_tags": 3, }, "qa": nil, diff --git a/internal/dao/ingestion_parser_config_migration.go b/internal/dao/ingestion_parser_config_migration.go index b1c781ea74..c059ac11a3 100644 --- a/internal/dao/ingestion_parser_config_migration.go +++ b/internal/dao/ingestion_parser_config_migration.go @@ -210,15 +210,10 @@ var ( // They are deleted so the stored config stops advertising behaviour the Go // runtime does not implement; every drop is logged with table, row and field. var ingestionRetiredFlatKeys = []string{ - // Spreadsheets are always rendered as segmented HTML; the flag only warns - // now (internal/parser/parser/office_table_render.go:deprecatedHTML4Excel). "html4excel", // Splits one parse into several ingestion jobs; it is not a page range and // not a chunk size. "task_page_size", - // Follows hyperlinks and indexes the linked content; unimplemented in Go. - "analyze_hyperlink", - "hyperlink_urls", // Video parsing is rejected at dispatch // (internal/ingestion/component/media_dispatch.go:maybeDispatchVideo). "video_prompt", diff --git a/internal/dao/ingestion_parser_config_migration_test.go b/internal/dao/ingestion_parser_config_migration_test.go index ea7b85f215..183edb9bd6 100644 --- a/internal/dao/ingestion_parser_config_migration_test.go +++ b/internal/dao/ingestion_parser_config_migration_test.go @@ -119,7 +119,7 @@ func TestMigrateParserChunkerTokenizerConfig(t *testing.T) { input: `{"layout_recognize":true,"Parser:HipSignsRhyme":{"pdf":{"preprocess":["main_content"],"remove_toc":false}}}`, want: `{"Parser:HipSignsRhyme":{"pdf":{"preprocess":["main_content"],"remove_toc":false,"parse_method":"deepdoc"}}}`, }, - {name: "retired settings are deleted", input: `{"html4excel":true,"task_page_size":256,"analyze_hyperlink":true,"hyperlink_urls":true,"video_prompt":"x"}`, want: `{}`}, + {name: "retired settings are deleted", input: `{"html4excel":true,"task_page_size":256,"video_prompt":"x"}`, want: `{}`}, {name: "no owned keys", input: `{"chunk_method":"naive","topn_tags":5}`, want: `{"chunk_method":"naive","topn_tags":5}`}, {name: "empty config", input: `{}`, want: `{}`}, {name: "canvas rows are skipped", pipeline: ptrString("canvas-1"), input: `{"layout_recognize":true,"chunk_token_num":128}`, want: `{"layout_recognize":true,"chunk_token_num":128}`}, diff --git a/internal/ingestion/component/parser.go b/internal/ingestion/component/parser.go index 8ce1bb0ed6..7d64b5083e 100644 --- a/internal/ingestion/component/parser.go +++ b/internal/ingestion/component/parser.go @@ -308,7 +308,6 @@ func defaultSetups() map[string]schema.ParserSetup { }, "spreadsheet": { "parse_method": "deepdoc", - "html4excel": false, "suffix": []string{"xls", "xlsx", "csv"}, }, "doc": { diff --git a/internal/ingestion/component/parser_dispatch.go b/internal/ingestion/component/parser_dispatch.go index b17b30dda2..f946b87a98 100644 --- a/internal/ingestion/component/parser_dispatch.go +++ b/internal/ingestion/component/parser_dispatch.go @@ -254,7 +254,7 @@ func pythonFamilyName(raw string) string { return "doc" case "docx": return "docx" - case "ppt", "pptx", "pages", "dps", "dpt", "slides": + case "ppt", "pptx", "pages", "slides": return "slides" case "xls", "xlsx", "spreadsheet": return "spreadsheet" diff --git a/internal/ingestion/component/parser_dispatch_test.go b/internal/ingestion/component/parser_dispatch_test.go index 0670c68cc6..312e27e4ac 100644 --- a/internal/ingestion/component/parser_dispatch_test.go +++ b/internal/ingestion/component/parser_dispatch_test.go @@ -2090,7 +2090,7 @@ func tcadpZipFixtureForComponent(t *testing.T) []byte { } func TestParserFileFamilyPresentationExtensions(t *testing.T) { - for _, ext := range []string{"ppt", "pptx", "pages", "dps", "dpt"} { + for _, ext := range []string{"ppt", "pptx", "pages"} { if got := ParserFileFamily(ext); got != "slides" { t.Errorf("ParserFileFamily(%q) = %q, want slides", ext, got) } diff --git a/internal/ingestion/component/parser_test.go b/internal/ingestion/component/parser_test.go index 820f61f9f9..e43f5927de 100644 --- a/internal/ingestion/component/parser_test.go +++ b/internal/ingestion/component/parser_test.go @@ -198,16 +198,19 @@ func TestNewParserComponentSkipsNonFamilyParams(t *testing.T) { } } -// A canvas saved by the Python frontend stores the Parser params in the -// nested shape {outputs, setups: {pdf: {...}}}; the Go component reads the -// flat shape with file families as top-level keys. The nested group must be -// lifted instead of being treated as a bogus "setups" file family. +func TestSpreadsheetDefaultsDoNotExposeRetiredOption(t *testing.T) { + if _, ok := defaultSetups()["spreadsheet"]["html4excel"]; ok { + t.Fatal("spreadsheet defaults expose the retired option") + } +} + +// A canvas can store Parser params as nested setups; lift the families before use. func TestNewParserComponentFlattensNestedSetups(t *testing.T) { component, err := NewParserComponent(map[string]any{ "outputs": map[string]any{"html": map[string]any{"type": "string"}}, "setups": map[string]any{ "pdf": map[string]any{"parse_method": "vision"}, - "spreadsheet": map[string]any{"html4excel": true}, + "spreadsheet": map[string]any{"parse_method": "tcadp"}, }, }) if err != nil { @@ -221,8 +224,8 @@ func TestNewParserComponentFlattensNestedSetups(t *testing.T) { if got := parserComponent.setups["pdf"]["parse_method"]; got != "vision" { t.Errorf("pdf parse_method = %v, want vision (nested setups not flattened)", got) } - if got := parserComponent.setups["spreadsheet"]["html4excel"]; got != true { - t.Errorf("spreadsheet html4excel = %v, want true (nested setups not flattened)", got) + if got := parserComponent.setups["spreadsheet"]["parse_method"]; got != "tcadp" { + t.Errorf("spreadsheet parse_method = %v, want tcadp (nested setups not flattened)", got) } // When both shapes carry the same family, the top-level (Go-native, flat) diff --git a/internal/ingestion/component/parser_try_parse_test.go b/internal/ingestion/component/parser_try_parse_test.go index b43773e2de..2bd122989c 100644 --- a/internal/ingestion/component/parser_try_parse_test.go +++ b/internal/ingestion/component/parser_try_parse_test.go @@ -92,7 +92,7 @@ func TestParserComponentCorrectsDOCXUploadedAsDOC(t *testing.T) { originalLogger := common.Logger common.Logger = zap.New(core) t.Cleanup(func() { common.Logger = originalLogger }) - for _, suffix := range []string{"doc", "xls", "ppt", "wps", "docx"} { + for _, suffix := range []string{"doc", "xls", "ppt", "docx"} { t.Run(suffix, func(t *testing.T) { var messages []string ctx := runtime.WithProgressMessageCallback(t.Context(), func(_, message string) { messages = append(messages, message) }) diff --git a/internal/ingestion/pipeline/template/ingestion_pipeline_presentation.json b/internal/ingestion/pipeline/template/ingestion_pipeline_presentation.json index 14fff21e90..d1cea66cc8 100644 --- a/internal/ingestion/pipeline/template/ingestion_pipeline_presentation.json +++ b/internal/ingestion/pipeline/template/ingestion_pipeline_presentation.json @@ -70,9 +70,7 @@ ], "suffix": [ "pptx", - "ppt", - "dps", - "dpt" + "ppt" ] } } diff --git a/internal/ingestion/task/pipeline_executor_defaults_test.go b/internal/ingestion/task/pipeline_executor_defaults_test.go index 421c8a23e7..94b7985a83 100644 --- a/internal/ingestion/task/pipeline_executor_defaults_test.go +++ b/internal/ingestion/task/pipeline_executor_defaults_test.go @@ -47,7 +47,7 @@ var builtinComponentParamsGolden = map[string]string{ "one": "{\"File\": {}, \"Parser:HipSignsRhyme\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"doc\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"doc\"]}, \"docx\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"docx\"], \"vlm\": {}}, \"html\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"htm\", \"html\"]}, \"markdown\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"md\", \"markdown\", \"mdx\"], \"vlm\": {}}, \"pdf\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pdf\"], \"vlm\": {}}, \"spreadsheet\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"xls\", \"xlsx\"], \"vlm\": {}}, \"text&code\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"txt\"]}}, \"OneChunker:DryDrinksVisit\": {}, \"Tokenizer:FrankWeeksListen\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}, \"Extractor:AutoExtractDefault\": {\"llm_id\": \"\", \"keywords\": {\"top_n\": 0}, \"questions\": {\"top_n\": 0}, \"tags\": {\"top_n\": 0, \"tag_file_id\": \"\"}, \"summary\": {\"enabled\": false}, \"metadata\": {\"enabled\": false, \"metadata\": [], \"built_in_metadata\": []}}}", "paper": "{\"File\":{},\"Parser:HipSignsRhyme\":{\"enable_vision_enhancement\":false,\"vlm\":{\"llm_id\":\"\"},\"pdf\":{\"enable_multi_column\":true,\"parse_method\":\"DeepDOC\",\"preprocess\":[\"main_content\"],\"suffix\":[\"pdf\"],\"vlm\":{}}},\"TitleChunker:SparklySchoolsTravel\":{\"hierarchy\":0,\"include_heading_content\":false,\"levels\":[[\"^#[^#]\",\"^##[^#]\",\"^###[^#]\",\"^####[^#]\"],[\"第[零一二三四五六七八九十百0-9]+(分?编|部分)\",\"第[零一二三四五六七八九十百0-9]+章\",\"第[零一二三四五六七八九十百0-9]+节\",\"第[零一二三四五六七八九十百0-9]+条\",\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\"],[\"第[0-9]+章\",\"第[0-9]+节\",\"[0-9]{1,2}[\\\\. 、]\",\"[0-9]{1,2}\\\\.[0-9]{1,2}($|[^a-zA-Z/%~.-])\",\"[0-9]{1,2}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\"],[\"第[零一二三四五六七八九十百0-9]+章\",\"第[零一二三四五六七八九十百0-9]+节\",\"[零一二三四五六七八九十百]+[ 、]\",\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\",\"[\\\\((][0-9]{,2}[\\\\))]\"],[\"PART (ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|TEN)\",\"Chapter (I+V?|VI*|XI|IX|X)\",\"Section [0-9]+\",\"Article [0-9]+\"]],\"hierarchyRules\":[{\"levels\":[{\"expression\":\"^#[^#]\"},{\"expression\":\"^##[^#]\"},{\"expression\":\"^###[^#]\"},{\"expression\":\"^####[^#]\"}]},{\"levels\":[{\"expression\":\"第[零一二三四五六七八九十百0-9]+(分?编|部分)\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+章\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+节\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+条\"},{\"expression\":\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\"}]},{\"levels\":[{\"expression\":\"第[0-9]+章\"},{\"expression\":\"第[0-9]+节\"},{\"expression\":\"[0-9]{1,2}[\\\\. 、]\"},{\"expression\":\"[0-9]{1,2}\\\\.[0-9]{1,2}($|[^a-zA-Z/%~.-])\"},{\"expression\":\"[0-9]{1,2}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\"}]},{\"levels\":[{\"expression\":\"第[零一二三四五六七八九十百0-9]+章\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+节\"},{\"expression\":\"[零一二三四五六七八九十百]+[ 、]\"},{\"expression\":\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\"},{\"expression\":\"[\\\\((][0-9]{,2}[\\\\))]\"}]},{\"levels\":[{\"expression\":\"PART (ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|TEN)\"},{\"expression\":\"Chapter (I+V?|VI*|XI|IX|X)\"},{\"expression\":\"Section [0-9]+\"},{\"expression\":\"Article [0-9]+\"}]}],\"groupRules\":[{\"levels\":[{\"expression\":\"^#[^#]\"},{\"expression\":\"^##[^#]\"},{\"expression\":\"^###[^#]\"},{\"expression\":\"^####[^#]\"}]},{\"levels\":[{\"expression\":\"第[零一二三四五六七八九十百0-9]+(分?编|部分)\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+章\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+节\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+条\"},{\"expression\":\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\"}]},{\"levels\":[{\"expression\":\"第[0-9]+章\"},{\"expression\":\"第[0-9]+节\"},{\"expression\":\"[0-9]{1,2}[\\\\. 、]\"},{\"expression\":\"[0-9]{1,2}\\\\.[0-9]{1,2}($|[^a-zA-Z/%~.-])\"},{\"expression\":\"[0-9]{1,2}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2}\"}]},{\"levels\":[{\"expression\":\"第[零一二三四五六七八九十百0-9]+章\"},{\"expression\":\"第[零一二三四五六七八九十百0-9]+节\"},{\"expression\":\"[零一二三四五六七八九十百]+[ 、]\"},{\"expression\":\"[\\\\((][零一二三四五六七八九十百]+[\\\\))]\"},{\"expression\":\"[\\\\((][0-9]{,2}[\\\\))]\"}]},{\"levels\":[{\"expression\":\"PART (ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|TEN)\"},{\"expression\":\"Chapter (I+V?|VI*|XI|IX|X)\"},{\"expression\":\"Section [0-9]+\"},{\"expression\":\"Article [0-9]+\"}]}],\"hierarchyHierarchy\":\"0\",\"hierarchyGroup\":\"0\",\"method\":\"group\"},\"Tokenizer:GreatCarsWash\":{\"fields\":\"text\",\"filename_embd_weight\":0.1,\"search_method\":[\"embedding\",\"full_text\"]},\"Extractor:AutoExtractDefault\":{\"llm_id\":\"\",\"keywords\":{\"top_n\":0},\"questions\":{\"top_n\":0},\"tags\":{\"top_n\":0,\"tag_file_id\":\"\"},\"summary\":{\"enabled\":false},\"metadata\":{\"enabled\":false,\"metadata\":[],\"built_in_metadata\":[]}}}", "picture": "{\"File\": {}, \"Parser:ViewsCaptureLight\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"image\": {\"ocr_enabled\": true, \"preprocess\": [\"main_content\"], \"suffix\": [\"bmp\", \"gif\", \"jpeg\", \"jpg\", \"png\", \"svg\", \"tif\", \"tiff\", \"webp\"]}, \"video\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"3gp\", \"3gpp\", \"avi\", \"flv\", \"mkv\", \"mov\", \"mp4\", \"mpeg\", \"mpg\", \"webm\", \"wmv\"]}}, \"OneChunker:BrightColorsGlow\": {}, \"Tokenizer:SharpLensFocus\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}, \"Extractor:AutoExtractDefault\": {\"llm_id\": \"\", \"keywords\": {\"top_n\": 0}, \"questions\": {\"top_n\": 0}, \"tags\": {\"top_n\": 0, \"tag_file_id\": \"\"}, \"summary\": {\"enabled\": false}, \"metadata\": {\"enabled\": false, \"metadata\": [], \"built_in_metadata\": []}}}", - "presentation": "{\"File\": {}, \"Parser:HipSignsRhyme\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"pdf\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pdf\"], \"vlm\": {}}, \"slides\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pptx\", \"ppt\", \"dps\", \"dpt\"]}}, \"Tokenizer:TallTreesDance\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}, \"PageChunker:HappyHillsGlow\": {}, \"Extractor:AutoExtractDefault\": {\"llm_id\": \"\", \"keywords\": {\"top_n\": 0}, \"questions\": {\"top_n\": 0}, \"tags\": {\"top_n\": 0, \"tag_file_id\": \"\"}, \"summary\": {\"enabled\": false}, \"metadata\": {\"enabled\": false, \"metadata\": [], \"built_in_metadata\": []}}}", + "presentation": "{\"File\": {}, \"Parser:HipSignsRhyme\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"pdf\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pdf\"], \"vlm\": {}}, \"slides\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pptx\", \"ppt\"]}}, \"Tokenizer:TallTreesDance\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}, \"PageChunker:HappyHillsGlow\": {}, \"Extractor:AutoExtractDefault\": {\"llm_id\": \"\", \"keywords\": {\"top_n\": 0}, \"questions\": {\"top_n\": 0}, \"tags\": {\"top_n\": 0, \"tag_file_id\": \"\"}, \"summary\": {\"enabled\": false}, \"metadata\": {\"enabled\": false, \"metadata\": [], \"built_in_metadata\": []}}}", "qa": "{\"File\": {}, \"Parser:HipSignsRhyme\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"docx\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"docx\"], \"vlm\": {}}, \"markdown\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"md\", \"markdown\", \"mdx\"], \"vlm\": {}}, \"pdf\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"pdf\"], \"vlm\": {}}, \"spreadsheet\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"xls\", \"xlsx\", \"csv\"], \"vlm\": {}}, \"text&code\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"txt\"]}}, \"Tokenizer:ColdCloudsDream\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}, \"QAChunker:TidyCloudsThink\": {}}", "table": "{\"File\": {}, \"Parser:HipSignsRhyme\": {\"enable_vision_enhancement\": false, \"vlm\": {\"llm_id\": \"\"}, \"spreadsheet\": {\"parse_method\": \"DeepDOC\", \"preprocess\": [\"main_content\"], \"suffix\": [\"xls\", \"xlsx\", \"csv\"], \"vlm\": {}, \"column_mode\": \"auto\", \"column_roles\": {}, \"column_names\": []}, \"text&code\": {\"preprocess\": [\"main_content\"], \"suffix\": [\"txt\"]}}, \"TableChunker:FastFoxesJump\": {}, \"Tokenizer:DeepLakesShine\": {\"fields\": \"text\", \"filename_embd_weight\": 0.1, \"search_method\": [\"embedding\", \"full_text\"]}}", } diff --git a/internal/parser/parser/csv_parser.go b/internal/parser/parser/csv_parser.go index 5f77176e5a..ceb1373774 100644 --- a/internal/parser/parser/csv_parser.go +++ b/internal/parser/parser/csv_parser.go @@ -75,7 +75,6 @@ func (p *CSVParser) ConfigureFromSetup(setup map[string]any) { if v, ok := setup["parse_method"].(string); ok && v != "" { p.ParseMethod = v } - deprecatedHTML4Excel(setup, p.String()) deprecatedChunkRows(setup, p.String()) if v, ok := setup["tcadp_apiserver"].(string); ok && v != "" { p.TCADPAPIServer = v diff --git a/internal/parser/parser/csv_parser_test.go b/internal/parser/parser/csv_parser_test.go index eace88d521..62efc1c28f 100644 --- a/internal/parser/parser/csv_parser_test.go +++ b/internal/parser/parser/csv_parser_test.go @@ -3,7 +3,6 @@ package parser import ( "context" "fmt" - "reflect" "strings" "testing" @@ -77,30 +76,6 @@ func TestCSVParser_UTF8BOM(t *testing.T) { } } -// TestCSVParserHTML4ExcelIsIgnored pins the retirement: html4excel is still -// accepted at the entry (with a deprecation warning) but selects nothing — -// the wire is identical to the default path. -func TestCSVParserHTML4ExcelIsIgnored(t *testing.T) { - data := []byte("Question,Answer\nQ1,A1\n") - plain := NewCSVParser() - plainRes := plain.ParseWithResult(context.Background(), "qa.csv", data) - if plainRes.Err != nil { - t.Fatalf("ParseWithResult failed: %v", plainRes.Err) - } - p := NewCSVParser() - p.ConfigureFromSetup(map[string]any{"html4excel": true}) - res := p.ParseWithResult(context.Background(), "qa.csv", data) - if res.Err != nil { - t.Fatalf("ParseWithResult failed: %v", res.Err) - } - if len(res.JSON) != 1 || res.JSON[0].ToMap()["doc_type_kwd"] != "table" { - t.Fatalf("items = %#v, want one table item", res.JSON) - } - if !reflect.DeepEqual(res.JSON, plainRes.JSON) { - t.Errorf("html4excel changed the wire: %v vs %v", res.JSON, plainRes.JSON) - } -} - func TestCSVParser_ConfigureproducedJSON(t *testing.T) { csvData := []byte("col1,col2\nval1,val2\n") p := NewCSVParser() diff --git a/internal/parser/parser/office_table_render.go b/internal/parser/parser/office_table_render.go index 9d76f2d090..32dfaeff02 100644 --- a/internal/parser/parser/office_table_render.go +++ b/internal/parser/parser/office_table_render.go @@ -94,10 +94,8 @@ func trimCells(row []string) []string { // inside a merged block moves after the block, so every segment owns the // origins of its Covered slots. // -// Segmentation is semantic only — sheet boundaries and image anchors, never a -// size budget. The legacy html4excel path pre-cut a fixed 12 rows here, which -// ignored the user's chunk size; that budget belongs to the chunker (see the -// chunker's splitSpreadsheetTable). +// Segmentation follows sheet boundaries and image anchors; the chunker applies +// the configured size budget (see splitSpreadsheetTable). // // Every tuple is a spreadsheet position, [sheet, rowStart, rowEnd, colStart, // colEnd]. The same `positions` field carries PDF layout boxes @@ -582,17 +580,6 @@ func deprecatedChunkRows(setup map[string]any, parserName string) { zap.String("parser", parserName), zap.Int("chunk_rows", rows)) } -// deprecatedHTML4Excel reports the retired html4excel option. Both -// spreadsheet builders collapsed into the segmented-HTML wire, so the flag -// selects nothing anymore. Only an enabled flag warns: false is the default -// every parser config carries, and warning there would be noise. -func deprecatedHTML4Excel(setup map[string]any, parserName string) { - if enabled, ok := setup["html4excel"].(bool); ok && enabled { - common.Warn("spreadsheet parser ignored deprecated html4excel; spreadsheet tables are always emitted as segmented HTML", - zap.String("parser", parserName)) - } -} - // extractXLSXImages returns the floating and in-cell images anchored to a // worksheet as structured parser items. Excelize exposes both kinds through // GetPictureCells/GetPictures; walking the reported anchor cells avoids diff --git a/internal/parser/parser/office_table_render_test.go b/internal/parser/parser/office_table_render_test.go index 0599c56384..79728a1b24 100644 --- a/internal/parser/parser/office_table_render_test.go +++ b/internal/parser/parser/office_table_render_test.go @@ -57,38 +57,6 @@ func TestXLSXParserEmitsSegmentedHTMLTable(t *testing.T) { } } -// TestXLSXParserHTML4ExcelIsIgnored pins the retirement: html4excel is still -// accepted at the entry (with a deprecation warning) but selects nothing — -// the wire is identical to the default path. -func TestXLSXParserHTML4ExcelIsIgnored(t *testing.T) { - data := newTestXLSX(t, func(f *excelize.File) { - mustSetCell(t, f, "Sheet1", "A1", "Question") - mustSetCell(t, f, "Sheet1", "B1", "Answer") - mustSetCell(t, f, "Sheet1", "A2", "Q1") - mustSetCell(t, f, "Sheet1", "B2", "A1") - }) - plain, _ := NewXLSXParser("") - plainRes := plain.ParseWithResult(t.Context(), "qa.xlsx", data) - if plainRes.Err != nil { - t.Fatalf("ParseWithResult: %v", plainRes.Err) - } - p, _ := NewXLSXParser("") - p.ConfigureFromSetup(map[string]any{"html4excel": true}) - res := p.ParseWithResult(t.Context(), "qa.xlsx", data) - if res.Err != nil { - t.Fatalf("ParseWithResult: %v", res.Err) - } - if len(res.JSON) != 1 { - t.Fatalf("items = %d, want one atomic table item", len(res.JSON)) - } - if res.JSON[0].ToMap()["doc_type_kwd"] != "table" || res.JSON[0].ToMap()["table"] == nil { - t.Fatalf("html4excel item = %#v", res.JSON[0]) - } - if !reflect.DeepEqual(res.JSON, plainRes.JSON) { - t.Errorf("html4excel changed the wire: %v vs %v", res.JSON, plainRes.JSON) - } -} - func TestXLSXParserDoesNotPrechunkRows(t *testing.T) { const dataRows = 257 data := newTestXLSX(t, func(f *excelize.File) { diff --git a/internal/parser/parser/xls_parser.go b/internal/parser/parser/xls_parser.go index ecbccbca09..25c902e468 100644 --- a/internal/parser/parser/xls_parser.go +++ b/internal/parser/parser/xls_parser.go @@ -58,7 +58,6 @@ func (p *XLSParser) ConfigureFromSetup(setup map[string]any) { if v, ok := setup["parse_method"].(string); ok && v != "" { p.ParseMethod = v } - deprecatedHTML4Excel(setup, p.String()) deprecatedChunkRows(setup, p.String()) if v, ok := setup["tcadp_apiserver"].(string); ok && v != "" { p.TCADPAPIServer = v diff --git a/internal/parser/parser/xlsx_parser.go b/internal/parser/parser/xlsx_parser.go index 939a9345f5..42e531ec99 100644 --- a/internal/parser/parser/xlsx_parser.go +++ b/internal/parser/parser/xlsx_parser.go @@ -52,7 +52,6 @@ func (p *XLSXParser) ConfigureFromSetup(setup map[string]any) { if v, ok := setup["parse_method"].(string); ok && v != "" { p.ParseMethod = v } - deprecatedHTML4Excel(setup, p.String()) deprecatedChunkRows(setup, p.String()) if v, ok := setup["tcadp_apiserver"].(string); ok && v != "" { p.TCADPAPIServer = v diff --git a/internal/service/document/document_dataset_update.go b/internal/service/document/document_dataset_update.go index 1add74b108..ecb3a7e1cd 100644 --- a/internal/service/document/document_dataset_update.go +++ b/internal/service/document/document_dataset_update.go @@ -533,7 +533,7 @@ func isPresentationFile(name *string) bool { return false } ext := strings.ToLower(filepath.Ext(*name)) - return ext == ".ppt" || ext == ".pptx" || ext == ".pages" || ext == ".dps" || ext == ".dpt" + return ext == ".ppt" || ext == ".pptx" || ext == ".pages" } func validateMetaFields(meta map[string]any) error { diff --git a/internal/service/document/document_dataset_update_test.go b/internal/service/document/document_dataset_update_test.go index c560ff652f..2f14841d43 100644 --- a/internal/service/document/document_dataset_update_test.go +++ b/internal/service/document/document_dataset_update_test.go @@ -118,7 +118,7 @@ func TestUpdateDatasetDocumentConfigPatchPreservesOmittedSettings(t *testing.T) } func TestUpdateDatasetDocumentRejectsUnsupportedFileFamilyBeforeWrites(t *testing.T) { - for _, filename := range []string{"image.png", "deck.pptx", "deck.pages", "DECK.DPS", "deck.dpt"} { + for _, filename := range []string{"image.png", "deck.pptx", "deck.pages"} { for _, selection := range []string{"chunk_method", "parser_id"} { for _, withConfig := range []bool{false, true} { t.Run(fmt.Sprintf("%s/%s/config=%t", filename, selection, withConfig), func(t *testing.T) { diff --git a/internal/service/document/document_parser_selection.go b/internal/service/document/document_parser_selection.go index 18e69b6600..c38ef2a8ad 100644 --- a/internal/service/document/document_parser_selection.go +++ b/internal/service/document/document_parser_selection.go @@ -41,9 +41,7 @@ func dedicatedDocumentParserID(filetype utility.FileType, filename string) strin switch { case strings.HasSuffix(name, ".ppt"), strings.HasSuffix(name, ".pptx"), - strings.HasSuffix(name, ".pages"), - strings.HasSuffix(name, ".dps"), - strings.HasSuffix(name, ".dpt"): + strings.HasSuffix(name, ".pages"): return "presentation" case strings.HasSuffix(name, ".msg"), strings.HasSuffix(name, ".eml"): @@ -146,7 +144,7 @@ func parserSelectionColumns(sel *service.ParserSelection) (string, *string) { // (picture / audio / presentation / email), and failing that to the catch-all // general pipeline, with the config reseeded from that template. A family the // pipeline vocabulary cannot name cannot be judged against a declaration: the -// owning pipeline still takes the file, and with no owner (rtf, wps, ...) the +// owning pipeline still takes the file, and with no owner (rtf, ...) the // dataset's choice is honored. The row then matches the pipeline that actually // runs it: document parser_config drives both the parser-gap validation and the // runtime override params, and a row left on a parser that cannot run its file diff --git a/internal/service/document/document_parser_selection_test.go b/internal/service/document/document_parser_selection_test.go index e495a47a40..da3e8d0aeb 100644 --- a/internal/service/document/document_parser_selection_test.go +++ b/internal/service/document/document_parser_selection_test.go @@ -28,9 +28,6 @@ func TestDedicatedDocumentParserID(t *testing.T) { {"pptx routes to presentation", utility.FileTypeDOC, "deck.pptx", "presentation"}, {"legacy ppt routes to presentation", utility.FileTypeDOC, "deck.ppt", "presentation"}, {"pages routes to presentation", utility.FileTypeDOC, "deck.pages", "presentation"}, - {"wps presentation dps routes to presentation", utility.FileTypePPT, "deck.dps", "presentation"}, - {"wps presentation dpt routes to presentation", utility.FileTypePPT, "deck.dpt", "presentation"}, - {"wps presentation dps is case-insensitive", utility.FileTypePPT, "DECK.DPS", "presentation"}, {"presentation extension is case-insensitive", utility.FileTypeDOC, "DECK.PPTX", "presentation"}, {"eml routes to email", utility.FileTypeDOC, "mail.eml", "email"}, {"msg routes to email", utility.FileTypeDOC, "mail.msg", "email"}, @@ -350,15 +347,6 @@ func TestResolveDocumentParser_Priority(t *testing.T) { wantParserID: "presentation", wantFamilyIn: "slides", }, - { - name: "wps presentation dps reaches its owner pipeline", - kbParser: "general", - kbConfig: generalParserConfig(), - filename: "deck.dps", - filetype: utility.FileTypePPT, - wantParserID: "presentation", - wantFamilyIn: "slides", - }, { name: "an unmappable visual extension still reaches picture", kbParser: "general", diff --git a/internal/service/document/document_test.go b/internal/service/document/document_test.go index f9a1959a9f..760f46d1bf 100644 --- a/internal/service/document/document_test.go +++ b/internal/service/document/document_test.go @@ -3348,8 +3348,6 @@ func TestUpdateDatasetDocumentSavesVisionModelAcrossFileTypes(t *testing.T) { {"image.png", "visual", "general"}, {"deck.pptx", "ppt", "presentation"}, {"deck.pages", "doc", "presentation"}, - {"DECK.DPS", "ppt", "presentation"}, - {"deck.dpt", "ppt", "presentation"}, {"report.docx", "doc", "manual"}, } { for _, selection := range []string{"parser_id", "chunk_method"} { diff --git a/internal/service/file/file_content_cgo_test.go b/internal/service/file/file_content_cgo_test.go index 3bf99beb6e..cd32d85a61 100644 --- a/internal/service/file/file_content_cgo_test.go +++ b/internal/service/file/file_content_cgo_test.go @@ -84,7 +84,7 @@ func TestParseFileContent_DOCXReadsJSONItems(t *testing.T) { func TestMisnamedOfficeContentExtraction(t *testing.T) { data := minimalDOCX(t, "Corrected document content") - for _, name := range []string{"renamed.doc", "renamed.wps", "renamed.xls"} { + for _, name := range []string{"renamed.doc", "renamed.xls"} { t.Run(name, func(t *testing.T) { content := parseFileContent(t.Context(), name, data) if !strings.Contains(content, "Corrected document content") || content == string(data) { diff --git a/internal/utility/file.go b/internal/utility/file.go index a87f8c0ba2..32ad529d1d 100644 --- a/internal/utility/file.go +++ b/internal/utility/file.go @@ -113,17 +113,17 @@ func GetFileType(filename string) FileType { switch suffix { case "pdf": return FileTypePDF - case "xls", "et", "ett": + case "xls": return FileTypeXLS case "xlsx": return FileTypeXLSX case "csv": return FileTypeCSV - case "doc", "wps", "wpt": + case "doc": return FileTypeDOC case "docx": return FileTypeDOCX - case "ppt", "dps", "dpt": + case "ppt": return FileTypePPT case "pptx": return FileTypePPTX @@ -178,7 +178,7 @@ func FilenameType(filename string) FileType { docExtensions := []string{ "msg", "eml", "doc", "docx", "ppt", "pptx", "yml", "xml", "htm", "json", "jsonl", "ldjson", - "csv", "txt", "ini", "xls", "xlsx", "wps", "wpt", "et", "ett", "dps", "dpt", "rtf", "hlp", "pages", "numbers", "key", + "csv", "txt", "ini", "xls", "xlsx", "rtf", "hlp", "pages", "numbers", "key", "md", "markdown", "mdx", "py", "js", "java", "c", "cpp", "h", "php", "go", "ts", "sh", "cs", "kt", "html", "sql", "epub", } diff --git a/internal/utility/wps_filetype_test.go b/internal/utility/wps_filetype_test.go deleted file mode 100644 index 008f2c6382..0000000000 --- a/internal/utility/wps_filetype_test.go +++ /dev/null @@ -1,120 +0,0 @@ -// -// Copyright 2026 The InfiniFlow Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -package utility - -import "testing" - -// wpsRoutes maps a WPS private-format extension (without dot) to the MS-Office -// FileType it must resolve to. WPS reuses the legacy MS-OLE2/CFB binary -// structure, so .wps/.wpt are Word-compatible (DOC), .et/.ett are -// Excel-compatible (XLS), and .dps/.dpt are PowerPoint-compatible (PPT). -var wpsRoutes = []struct { - ext string - want FileType -}{ - {"wps", FileTypeDOC}, - {"wpt", FileTypeDOC}, - {"et", FileTypeXLS}, - {"ett", FileTypeXLS}, - {"dps", FileTypePPT}, - {"dpt", FileTypePPT}, -} - -// TestGetFileType_WPS_ExactRouting verifies the precise parser-family routing -// for every WPS private extension. This is the gate that actually feeds -// parser.GetParser, so a wrong mapping silently drops the file to text mode. -func TestGetFileType_WPS_ExactRouting(t *testing.T) { - for _, r := range wpsRoutes { - t.Run(r.ext, func(t *testing.T) { - got := GetFileType("sample." + r.ext) - if got != r.want { - t.Errorf("GetFileType(%q) = %q, want %q", "sample."+r.ext, got, r.want) - } - }) - } -} - -// TestGetFileType_WPS_CaseInsensitiveAndPath ensures case folding and a -// leading directory do not defeat the match (mirrors how real uploads arrive). -func TestGetFileType_WPS_CaseInsensitiveAndPath(t *testing.T) { - cases := []struct { - name string - filename string - want FileType - }{ - {"uppercase", "SLIDE.DPT", FileTypePPT}, - {"mixed case", "Book.Et", FileTypeXLS}, - {"leading dir", "/data/reports/quarter.wps", FileTypeDOC}, - {"nested dir", "a/b/c/template.ett", FileTypeXLS}, - {"long path mixed case", "/X/Y/Z/DECK.Dps", FileTypePPT}, - } - for _, tc := range cases { - t.Run(tc.name, func(t *testing.T) { - got := GetFileType(tc.filename) - if got != tc.want { - t.Errorf("GetFileType(%q) = %q, want %q", tc.filename, got, tc.want) - } - }) - } -} - -// TestGetFileType_WPS_NoOverMatch guards against accidentally widening the -// match: a non-WPS suffix that merely contains a WPS substring (or a doubled -// extension) must stay OTHER. -func TestGetFileType_WPS_NoOverMatch(t *testing.T) { - cases := []string{ - "notes.wpsx", // not .wps - "data.etx", // not .et - "saved.dpts", // not .dpt - "contract.wps.bak", - "slide.dpt.tmp", - } - for _, name := range cases { - t.Run(name, func(t *testing.T) { - if got := GetFileType(name); got != FileTypeOTHER { - t.Errorf("GetFileType(%q) = %q, want %q (must not over-match)", name, got, FileTypeOTHER) - } - }) - } -} - -// TestFilenameType_WPS_Accepted verifies the upload gate (FilenameType) no -// longer rejects WPS private formats with FileTypeOTHER. FilenameType buckets -// all office documents as FileTypeDOC, consistent with how .ppt/.doc/.xls are -// already handled; the precise family is re-derived downstream by GetFileType. -func TestFilenameType_WPS_Accepted(t *testing.T) { - for _, r := range wpsRoutes { - t.Run(r.ext, func(t *testing.T) { - got := FilenameType("sample." + r.ext) - if got == FileTypeOTHER { - t.Errorf("FilenameType(%q) = %q, want non-OTHER (upload gate must accept)", "sample."+r.ext, got) - } - }) - } -} - -// TestFilenameType_WPS_DoesNotLoosenGate ensures the new extensions did not -// weaken the gate: a genuinely unknown extension is still rejected. -func TestFilenameType_WPS_DoesNotLoosenGate(t *testing.T) { - for _, name := range []string{"mystery.xyz", "noext", "weird.wpsx"} { - t.Run(name, func(t *testing.T) { - if got := FilenameType(name); got != FileTypeOTHER { - t.Errorf("FilenameType(%q) = %q, want %q (gate must stay strict)", name, got, FileTypeOTHER) - } - }) - } -} diff --git a/test/api/config.go b/test/api/config.go index ec5a730eeb..8fd5a3e86e 100644 --- a/test/api/config.go +++ b/test/api/config.go @@ -105,7 +105,6 @@ func InitServerTestConfig() *ServerTestConfig { "delimiter": "\n", "auto_keywords": 0, "auto_questions": 0, - "html4excel": false, "image_context_size": 0, "table_context_size": 0, "topn_tags": 3, diff --git a/test/playwright/e2e/test_dataset_upload_parse.py b/test/playwright/e2e/test_dataset_upload_parse.py index 3990cbf05a..ad4efb0ed7 100644 --- a/test/playwright/e2e/test_dataset_upload_parse.py +++ b/test/playwright/e2e/test_dataset_upload_parse.py @@ -457,7 +457,6 @@ def step_04_set_dataset_settings( overlap_slider.press("ArrowRight") set_number_input(page, "ds-settings-parser-auto-keyword-input", 3) set_number_input(page, "ds-settings-parser-auto-question-input", 2) - set_switch_state(page, "ds-settings-parser-excel-to-html-switch", True) with step("fill graph and raptor settings"): page.get_by_test_id("ds-settings-graph-entity-types-add-btn").click() diff --git a/test/testcases/configs.py b/test/testcases/configs.py index 7d0b8daba2..014a6e7993 100644 --- a/test/testcases/configs.py +++ b/test/testcases/configs.py @@ -51,7 +51,6 @@ DEFAULT_PARSER_CONFIG = { "delimiter": "\n", "auto_keywords": 0, "auto_questions": 0, - "html4excel": False, "image_context_size": 0, "table_context_size": 0, "topn_tags": 3, diff --git a/web/src/components/excel-to-html-form-field.tsx b/web/src/components/excel-to-html-form-field.tsx deleted file mode 100644 index 0494d67361..0000000000 --- a/web/src/components/excel-to-html-form-field.tsx +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2026 The InfiniFlow Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { useTranslate } from '@/hooks/common-hooks'; -import { useFormContext } from 'react-hook-form'; -import { - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from './ui/form'; -import { Switch } from './ui/switch'; - -export function ExcelToHtmlFormField() { - const form = useFormContext(); - const { t } = useTranslate('knowledgeDetails'); - - return ( - { - if (typeof field.value === 'undefined') { - // default value set - form.setValue('parser_config.html4excel', false); - } - - return ( - -
- - {t('html4excel')} - -
- - - -
-
-
-
- -
-
- ); - }} - /> - ); -} diff --git a/web/src/hooks/parser-config-utils.ts b/web/src/hooks/parser-config-utils.ts index c5308b25a6..bdeaa8b48a 100644 --- a/web/src/hooks/parser-config-utils.ts +++ b/web/src/hooks/parser-config-utils.ts @@ -68,12 +68,10 @@ export const normalizeParserConfig = ( auto_questions, chunk_token_num, delimiter, - html4excel, layout_recognize, tag_kb_ids, topn_tags, filename_embd_weight, - task_page_size, pages, children_delimiter, use_parent_child, diff --git a/web/src/interfaces/database/dataset.ts b/web/src/interfaces/database/dataset.ts index e5a400f8ad..1015cd2340 100644 --- a/web/src/interfaces/database/dataset.ts +++ b/web/src/interfaces/database/dataset.ts @@ -75,7 +75,6 @@ interface Parserconfig { from_page?: number; to_page?: number; graphrag: Graphrag; - html4excel: boolean; image_context_size: number; layout_recognize: string; llm_id: string; @@ -123,7 +122,6 @@ export interface IKnowledgeFileParserConfig { chunk_token_num: number; layout_recognize: boolean; pages: number[][]; - task_page_size: number; } export interface IKnowledgeFile { diff --git a/web/src/interfaces/database/document.ts b/web/src/interfaces/database/document.ts index d77644a136..293d4a72ed 100644 --- a/web/src/interfaces/database/document.ts +++ b/web/src/interfaces/database/document.ts @@ -52,13 +52,11 @@ export interface IDocumentInfo { export interface IParserConfig { delimiter?: string; - html4excel?: boolean; layout_recognize?: string; pages?: any[]; chunk_token_num?: number; auto_keywords?: number; auto_questions?: number; - task_page_size?: number; raptor?: Raptor; graphrag?: GraphRag; image_context_window?: number; diff --git a/web/src/interfaces/request/document.ts b/web/src/interfaces/request/document.ts index ab7ffcaeae..49d65645f5 100644 --- a/web/src/interfaces/request/document.ts +++ b/web/src/interfaces/request/document.ts @@ -2,11 +2,9 @@ export interface IChangeParserConfigRequestBody { pages?: number[][]; chunk_token_num?: number; layout_recognize?: string; - task_page_size?: number; delimiter?: string; auto_keywords?: number; auto_questions?: number; - html4excel?: boolean; image_table_context_window?: number; image_context_size?: number; table_context_size?: number; diff --git a/web/src/locales/ar.ts b/web/src/locales/ar.ts index 608d078a9a..4dd9079fe8 100644 --- a/web/src/locales/ar.ts +++ b/web/src/locales/ar.ts @@ -372,10 +372,6 @@ export default { layoutRecognize: 'محلل قوات الدفاع الشعبي', layoutRecognizeTip: 'استخدم نموذجًا مرئيًا لتحليل تخطيط PDF لتحديد موقع عناوين المستندات وكتل النص والصور والجداول بشكل فعال. إذا تم اختيار الخيار البسيط، فسيتم استرداد النص العادي فقط في ملف PDF. يرجى ملاحظة أن هذا الخيار يعمل حاليًا فقط مع مستندات PDF.', - taskPageSize: 'حجم صفحة المهمة', - taskPageSizeMessage: 'الرجاء إدخال حجم صفحة المهمة الخاصة بك!', - taskPageSizeTip: - 'أثناء التعرف على التخطيط، يتم تقسيم ملف PDF إلى أجزاء ومعالجته بالتوازي لزيادة سرعة المعالجة. تحدد هذه المعلمة حجم كل قطعة. يقلل حجم القطعة الأكبر من احتمالية تقسيم النص المستمر بين الصفحات.', addPage: 'إضافة صفحة', greaterThan: 'يجب أن تكون القيمة الحالية أكبر من!', greaterThanPrevious: 'يجب أن تكون القيمة الحالية أكبر من السابقة!', @@ -402,9 +398,6 @@ export default { childrenDelimiter: 'محدد للنص', childrenDelimiterTip: 'يمكن أن يتكون المحدد أو الفاصل من حرف خاص واحد أو عدة أحرف. إذا كانت هناك أحرف متعددة، فتأكد من أنها محاطة بعلامات التحديد الخلفية (``). على سبيل المثال، إذا قمت بتكوين المحددات الخاصة بك على النحو التالي: \\n`##`;، فسيتم فصل النصوص الخاصة بك عند فواصل الأسطر ورموز التجزئة المزدوجة (##) والفواصل المنقوطة.', - html4excel: 'إكسل إلى HTML', - html4excelTip: - 'استخدم مع طريقة التقطيع العامة. عند التعطيل، سيتم تحليل جداول البيانات (XLSX أو XLS(Excel 97-2003)) الموجودة في قاعدة المعرفة إلى أزواج قيمة المفتاح. عند التمكين، سيتم تحليلها إلى جداول HTML، مع تقسيم كل 12 صفًا إذا كان الجدول الأصلي يحتوي على أكثر من 12 صفًا. راجع https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration للحصول على التفاصيل.', autoKeywords: 'الكلمة الرئيسية التلقائية', autoKeywordsTip: 'قم باستخراج الكلمات الرئيسية N تلقائيًا لكل مجموعة لزيادة تصنيفها للاستعلامات التي تحتوي على تلك الكلمات الرئيسية. انتبه إلى أنه سيتم استهلاك الرموز المميزة الإضافية بواسطة نموذج الفهرسة المحدد في "التكوين". يمكنك التحقق من الكلمات الأساسية المضافة أو تحديثها لمقطع من قائمة المقاطع. للحصول على التفاصيل، راجع https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.', diff --git a/web/src/locales/az.ts b/web/src/locales/az.ts index eae30cba11..7af7ff1687 100644 --- a/web/src/locales/az.ts +++ b/web/src/locales/az.ts @@ -608,10 +608,6 @@ Nümunə: 1024 ölçülü vektor təsviri olan 1 KB-lıq mesaj ~9 KB yer tutur. layoutRecognize: 'PDF parseri', layoutRecognizeTip: 'Sənəd başlıqlarının, mətn bloklarının, şəkillərin və cədvəllərin yerini səmərəli şəkildə müəyyən etmək üçün PDF tərtibatının təhlilində vizual modeldən istifadə edin. Sadə seçim seçilərsə, PDF-dən yalnız adi mətn çıxarılacaq. Nəzərə alın ki, bu seçim hazırda YALNIZ PDF sənədləri üçün işləyir.', - taskPageSize: 'Tapşırıq üzrə səhifə sayı', - taskPageSizeMessage: 'Tapşırıq üzrə səhifə sayını daxil edin!', - taskPageSizeTip: - 'Tərtibatın tanınması zamanı emal sürətini artırmaq üçün PDF faylı fraqmentlərə bölünür və paralel emal olunur. Bu parametr hər fraqmentin ölçüsünü təyin edir. Daha böyük fraqment ölçüsü ardıcıl mətnin səhifələr arasında bölünməsi ehtimalını azaldır.', addPage: 'Səhifə əlavə et', greaterThan: 'Cari dəyər son dəyərdən böyük olmalıdır!', greaterThanPrevious: 'Cari dəyər əvvəlki son dəyərdən böyük olmalıdır!', @@ -643,9 +639,6 @@ Nümunə: 1024 ölçülü vektor təsviri olan 1 KB-lıq mesaj ~9 KB yer tutur. delimiterPreviewEmpty: 'Ayırıcı yoxdur — mətn yalnız ölçüsünə görə hissələrə bölünəcək.', delimiterPreviewCount: '({{count}})', - html4excel: 'Excel-dən HTML-ə', - html4excelTip: - 'Ümumi hissələrə bölmə üsulu ilə istifadə edin. Söndürüldükdə verilənlər dəstindəki elektron cədvəllər (XLSX və ya XLS(Excel 97-2003)) açar-dəyər cütlərinə çevriləcək. Aktivləşdirildikdə isə HTML cədvəllərinə çevriləcək və ilkin cədvəldə 12-dən çox sətir varsa, hər 12 sətirdən bir bölünəcək. Ətraflı məlumat üçün https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration ünvanına baxın.', autoKeywords: 'Çıxarılacaq açar sözlərin sayı', autoKeywordsTip: "Hər hissə üçün avtomatik olaraq N açar söz çıxarır ki, həmin sözləri ehtiva edən sorğularda hissələrin sıralamadakı yeri yüksəlsin. Nəzərə alın ki, 'Konfiqurasiya' bölməsində göstərilən indeksləşdirmə modeli əlavə tokenlər sərf edəcək. Hissəyə əlavə edilmiş açar sözləri hissələr siyahısından yoxlaya və ya yeniləyə bilərsiniz. Ətraflı məlumat üçün https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration ünvanına baxın.", diff --git a/web/src/locales/bg.ts b/web/src/locales/bg.ts index a40cc409c9..3c5f42ac29 100644 --- a/web/src/locales/bg.ts +++ b/web/src/locales/bg.ts @@ -365,9 +365,6 @@ export default { layoutRecognize: 'PDF парсер', layoutRecognizeTip: 'Използвайте визуален модел за анализ на оформлението на PDF, за ефективно разпознаване на заглавия, текстови блокове, изображения и таблици. Ако е избрана опцията naive, ще бъде извлечен само обикновеният текст от PDF. Моля, имайте предвид, че тази опция в момента работи САМО за PDF документи.', - taskPageSize: 'Размер на страница за задача', - taskPageSizeMessage: 'Моля, въведете размер на страница за задача!', - taskPageSizeTip: `По време на разпознаването на оформлението PDF файлът се разделя на части и се обработва паралелно за увеличаване на скоростта. Този параметър задава размера на всяка част. По-голям размер намалява вероятността от разделяне на непрекъснат текст между страниците.`, addPage: 'Добави страница', greaterThan: 'Текущата стойност трябва да е по-голяма от до!', greaterThanPrevious: @@ -393,8 +390,6 @@ export default { childrenDelimiter: 'Разделител за текст', childrenDelimiterTip: 'Разделителят може да се състои от един или повече специални символа. Ако са повече символи, уверете се, че са оградени с обратни кавички (``). Например, ако конфигурирате разделителите си така: \\n`##`;, текстовете ви ще бъдат разделени при нов ред, двоен хеш (##) и точка и запетая.', - html4excel: 'Excel към HTML', - html4excelTip: `Използвайте с метода за разделяне General. Когато е деактивирано, електронните таблици (XLSX или XLS(Excel 97-2003)) в базата от знания ще бъдат обработени като двойки ключ-стойност. Когато е активирано, те ще бъдат обработени като HTML таблици, разделяйки всеки 12 реда, ако оригиналната таблица има повече от 12 реда. Вижте https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration за подробности.`, autoKeywords: 'Авто-ключови думи', autoKeywordsTip: `Автоматично извлича N ключови думи за всеки фрагмент, за да увеличи класирането им за заявки, съдържащи тези ключови думи. Имайте предвид, че допълнителни токени ще бъдат консумирани от индексиращия модел, указан в 'Конфигурация'. Можете да проверите или актуализирате добавените ключови думи за фрагмент от списъка с фрагменти. За подробности вижте https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Авто-въпроси', diff --git a/web/src/locales/de.ts b/web/src/locales/de.ts index 39e54ef75a..3566c5ff6a 100644 --- a/web/src/locales/de.ts +++ b/web/src/locales/de.ts @@ -363,10 +363,6 @@ Beispiel: Eine 1 KB Nachricht mit 1024-dim Einbettung verwendet ~9 KB. Das Stand layoutRecognize: 'Dokumentenparser', layoutRecognizeTip: 'Verwendet ein visuelles Modell für die PDF-Layout-Analyse, um Dokumententitel, Textblöcke, Bilder und Tabellen effektiv zu lokalisieren. Wenn die einfache Option gewählt wird, wird nur der reine Text im PDF abgerufen. Bitte beachten Sie, dass diese Option derzeit NUR für PDF-Dokumente funktioniert. Weitere Informationen finden Sie unter https://ragflow.io/docs/dataset_configuration#document-parsing-configuration.', - taskPageSize: 'Aufgabenseitengröße', - taskPageSizeMessage: 'Bitte geben Sie die Größe der Aufgabenseite ein!', - taskPageSizeTip: - 'Während der Layouterkennung wird eine PDF-Datei in Chunks aufgeteilt und parallel verarbeitet, um die Verarbeitungsgeschwindigkeit zu erhöhen. Dieser Parameter legt die Größe jedes Chunks fest. Eine größere Chunk-Größe verringert die Wahrscheinlichkeit, dass fortlaufender Text zwischen den Seiten aufgeteilt wird.', addPage: 'Seite hinzufügen', greaterThan: 'Der aktuelle Wert muss größer als "bis" sein!', greaterThanPrevious: @@ -395,9 +391,6 @@ Beispiel: Eine 1 KB Nachricht mit 1024-dim Einbettung verwendet ~9 KB. Das Stand childrenDelimiter: 'Trennzeichen für Text', childrenDelimiterTip: 'Ein Trennzeichen oder Separator kann aus einem oder mehreren Sonderzeichen bestehen. Bei mehreren Zeichen stellen Sie sicher, dass sie in Backticks (` `) eingeschlossen sind. Wenn Sie beispielsweise Ihre Trennzeichen so konfigurieren: \\n`##`;, dann werden Ihre Texte an Zeilenumbrüchen, doppelten Rautenzeichen (##) oder Semikolons getrennt.', - html4excel: 'Excel zu HTML', - html4excelTip: - 'Verwenden Sie dies zusammen mit der General-Schnittmethode. Wenn deaktiviert, werden Tabellenkalkulationsdateien (XLSX, XLS (Excel 97-2003)) zeilenweise in Schlüssel-Wert-Paare analysiert. Wenn aktiviert, werden Tabellenkalkulationsdateien in HTML-Tabellen umgewandelt. Wenn die ursprüngliche Tabelle mehr als 12 Zeilen enthält, teilt das System sie automatisch alle 12 Zeilen in mehrere HTML-Tabellen auf. Für weitere Informationen siehe https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.', autoKeywords: 'Auto-Schlüsselwort', autoKeywordsTip: 'Extrahieren Sie automatisch N Schlüsselwörter für jeden Abschnitt, um deren Ranking in Abfragen mit diesen Schlüsselwörtern zu verbessern. Beachten Sie, dass zusätzliche Tokens vom in den "Systemmodelleinstellungen" angegebenen Chat-Modell verbraucht werden. Sie können die hinzugefügten Schlüsselwörter eines Abschnitts in der Abschnittsliste überprüfen oder aktualisieren. Für weitere Informationen siehe https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.', diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 842fb22178..6644f74e24 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -642,9 +642,6 @@ Example: A 1 KB message with 1024-dim embedding uses ~9 KB. The 5 MB default lim layoutRecognize: 'PDF parser', layoutRecognizeTip: 'Use a visual model for PDF layout analysis to effectively locate document titles, text blocks, images, and tables. If the naive option is chosen, only the plain text in the PDF will be retrieved. Please note that this option currently works ONLY for PDF documents.', - taskPageSize: 'Task page size', - taskPageSizeMessage: 'Please input your task page size!', - taskPageSizeTip: `During layout recognition, a PDF file is split into chunks and processed in parallel to increase processing speed. This parameter sets the size of each chunk. A larger chunk size reduces the likelihood of splitting continuous text between pages.`, addPage: 'Add page', greaterThan: 'The current value must be greater than to!', greaterThanPrevious: @@ -675,8 +672,6 @@ Example: A 1 KB message with 1024-dim embedding uses ~9 KB. The 5 MB default lim 'No delimiters — text will be chunked by size only.', delimiterPreviewCount: '({{count}})', - html4excel: 'Excel to HTML', - html4excelTip: `Use with the General chunking method. When disabled, spreadsheets (XLSX or XLS(Excel 97-2003)) in the dataset will be parsed into key-value pairs. When enabled, they will be parsed into HTML tables, splitting every 12 rows if the original table has more than 12 rows. See https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration for details.`, autoKeywords: 'Number of keywords to extract', autoKeywordsTip: `Automatically extract N keywords for each chunk to increase their ranking for queries containing those keywords. Be aware that extra tokens will be consumed by the indexing model specified in 'Configuration'. You can check or update the added keywords for a chunk from the chunk list. For details, see https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Auto-question number', diff --git a/web/src/locales/es.ts b/web/src/locales/es.ts index 18e79e268b..b7c87e19eb 100644 --- a/web/src/locales/es.ts +++ b/web/src/locales/es.ts @@ -143,10 +143,6 @@ export default { layoutRecognize: 'Reconocimiento de disposición', layoutRecognizeTip: 'Usa modelos visuales para el análisis de disposición y así identificar mejor la estructura del documento, encontrar dónde están los títulos, bloques de texto, imágenes y tablas. Sin esta función, solo se obtendrá el texto plano del PDF. Para más información, consulte https://ragflow.io/docs/dataset_configuration#document-parsing-configuration.', - taskPageSize: 'Tamaño de la tarea por página', - taskPageSizeMessage: - '¡Por favor ingresa el tamaño de la tarea por página', - taskPageSizeTip: `Si usas el reconocimiento de disposición, el archivo PDF se dividirá en grupos de páginas consecutivas. El análisis de disposición se realizará en paralelo entre los grupos para aumentar la velocidad de procesamiento. El 'Tamaño de tarea por página' determina el tamaño de los grupos. Cuanto mayor sea el tamaño de la página, menor será la posibilidad de dividir texto continuo entre páginas en diferentes fragmentos.`, addPage: 'Agregar página', greaterThan: 'El valor actual debe ser mayor que el valor final.', greaterThanPrevious: 'El valor actual debe ser mayor que el anterior.', @@ -164,8 +160,6 @@ export default { topK: 'Top-K', topKTip: `Utilizado junto con el Rerank model, esta configuración define el número de fragmentos de texto que se enviarán al modelo reranking especificado.`, delimiter: `Delimitadores para segmentación de texto`, - html4excel: 'Excel a HTML', - html4excelTip: `Usar junto con el método de fragmentación General. Cuando está desactivado, los archivos de hoja de cálculo (XLSX, XLS (Excel 97-2003)) se analizan línea por línea como pares clave-valor. Cuando está activado, los archivos de hoja de cálculo se convierten en tablas HTML. Si la tabla original tiene más de 12 filas, el sistema la dividirá automáticamente en varias tablas HTML cada 12 filas. Para más información, consulte https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.`, }, knowledgeConfiguration: { diff --git a/web/src/locales/fr.ts b/web/src/locales/fr.ts index d2c97ac03f..60b52c5dbb 100644 --- a/web/src/locales/fr.ts +++ b/web/src/locales/fr.ts @@ -429,10 +429,6 @@ export default { layoutRecognize: 'Analyseur PDF', layoutRecognizeTip: "Utilise un modèle visuel pour détecter les titres, blocs de texte, images et tableaux dans les PDF. Si l'option naïve est choisie, seul le texte brut est extrait. Ne fonctionne que sur les fichiers PDF.", - taskPageSize: 'Taille de page par tâche', - taskPageSizeMessage: 'Veuillez saisir une taille de page pour la tâche !', - taskPageSizeTip: - 'Pendant la reconnaissance, un fichier PDF est divisé en segments traités en parallèle. Une taille plus grande réduit les coupures de texte entre pages.', addPage: 'Ajouter une page', greaterThan: 'La valeur actuelle doit être supérieure à "à" !', greaterThanPrevious: @@ -453,9 +449,6 @@ export default { delimiter: 'Délimiteur de texte', delimiterTip: 'Un délimiteur peut être un ou plusieurs caractères spéciaux. Pour plusieurs caractères, encadrez-les de backticks (``). Ex : \\n`##`;', - html4excel: 'Excel vers HTML', - html4excelTip: - 'Utilisé avec la méthode "générale". Si désactivé, les tableaux sont convertis en paires clé-valeur. Sinon, ils deviennent des tableaux HTML divisés toutes les 12 lignes.', autoKeywords: 'Mots-clés automatiques', autoKeywordsTip: 'Extrait automatiquement N mots-clés par segment. Consomme des tokens. Voir la documentation : https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.', diff --git a/web/src/locales/id.ts b/web/src/locales/id.ts index 2e41bcaa02..0a32434c45 100644 --- a/web/src/locales/id.ts +++ b/web/src/locales/id.ts @@ -148,9 +148,6 @@ export default { layoutRecognize: 'Pengenalan tata letak', layoutRecognizeTip: 'Gunakan model visual untuk analisis tata letak untuk lebih mengidentifikasi struktur dokumen, menemukan di mana judul, blok teks, gambar, and tabel berada. Tanpa fitur ini, hanya teks biasa dari PDF yang dapat diperoleh. Untuk informasi lebih lanjut, lihat https://ragflow.io/docs/dataset_configuration#document-parsing-configuration.', - taskPageSize: 'Ukuran halaman tugas', - taskPageSizeMessage: 'Silakan masukkan ukuran halaman tugas Anda!', - taskPageSizeTip: `Jika menggunakan pengenalan tata letak, file PDF akan dibagi menjadi kelompok berturut-turut. Analisis tata letak akan dilakukan secara paralel antar kelompok untuk meningkatkan kecepatan pemrosesan. 'Ukuran halaman tugas' menentukan ukuran kelompok. Semakin besar ukuran halaman, semakin kecil kemungkinan teks berkelanjutan antara halaman dibagi menjadi potongan yang berbeda.`, addPage: 'Tambah halaman', greaterThan: 'Nilai saat ini harus lebih besar dari!', greaterThanPrevious: 'Nilai saat ini harus lebih besar dari sebelumnya!', @@ -168,8 +165,6 @@ export default { topK: 'Top-K', topKTip: `Digunakan bersama dengan Rerank model, pengaturan ini menentukan jumlah potongan teks yang akan dikirim ke model reranking yang ditentukan.`, delimiter: `Pemisah untuk segmentasi teks`, - html4excel: 'Excel ke HTML', - html4excelTip: `Gunakan bersama dengan metode pemotongan General. Ketika dinonaktifkan, file spreadsheet (XLSX, XLS (Excel 97-2003)) akan dianalisis baris demi baris menjadi pasangan kunci-nilai. Ketika diaktifkan, file spreadsheet akan dianalisis menjadi tabel HTML. Jika tabel asli memiliki lebih dari 12 baris, sistem akan secara otomatis membagi menjadi beberapa tabel HTML setiap 12 baris. Untuk informasi lebih lanjut, lihat https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.`, }, knowledgeConfiguration: { parsingMode: 'Mode parsing', diff --git a/web/src/locales/it.ts b/web/src/locales/it.ts index 50332e1d66..2ecca75abc 100644 --- a/web/src/locales/it.ts +++ b/web/src/locales/it.ts @@ -555,9 +555,6 @@ Esempio: un messaggio di 1 KB con embedding a 1024 dimensioni usa ~9 KB. Il limi layoutRecognize: 'Parser PDF', layoutRecognizeTip: "Usa un modello visivo per l'analisi del layout PDF per individuare efficacemente titoli, blocchi di testo, immagini e tabelle. Se viene scelta l'opzione naive, sarà recuperato solo il testo semplice nel PDF. Nota che questa opzione attualmente funziona SOLO per i documenti PDF.", - taskPageSize: 'Dimensione pagina attività', - taskPageSizeMessage: 'Inserisci la dimensione della pagina attività!', - taskPageSizeTip: `Durante il riconoscimento del layout, un file PDF viene suddiviso in chunk ed elaborato in parallelo per aumentare la velocità di elaborazione. Questo parametro imposta la dimensione di ogni chunk. Una dimensione chunk maggiore riduce la probabilità di dividere il testo continuo tra le pagine.`, addPage: 'Aggiungi pagina', greaterThan: 'Il valore attuale deve essere maggiore di!', greaterThanPrevious: @@ -584,8 +581,6 @@ Esempio: un messaggio di 1 KB con embedding a 1024 dimensioni usa ~9 KB. Il limi childrenDelimiterTip: 'Un delimitatore può consistere in uno o più caratteri speciali. Se sono più caratteri, assicurati che siano racchiusi tra backtick (``). Ad esempio, se configuri i tuoi delimitatori così: \\n`##`;, i tuoi testi saranno separati a interruzioni di riga, doppio cancelletto (##) e punto e virgola.', - html4excel: 'Excel in HTML', - html4excelTip: `Usa con il metodo di chunking Generale. Quando disabilitato, i fogli di calcolo (XLSX o XLS (Excel 97-2003)) nel dataset saranno analizzati in coppie chiave-valore. Quando abilitato, saranno analizzati in tabelle HTML, dividendo ogni 12 righe se la tabella originale ha più di 12 righe. Vedi https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration per i dettagli.`, autoKeywords: 'Parole chiave automatiche', autoKeywordsTip: `Estrai automaticamente N parole chiave per ogni chunk per aumentare il loro ranking per le query contenenti quelle parole chiave. Tieni presente che saranno consumati token extra dal modello di indicizzazione specificato in 'Configurazione'. Puoi controllare o aggiornare le parole chiave aggiunte per un chunk dalla lista dei chunk. Per i dettagli, vedi https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Domande automatiche', diff --git a/web/src/locales/ja.ts b/web/src/locales/ja.ts index 18f941ce26..e5551a471d 100644 --- a/web/src/locales/ja.ts +++ b/web/src/locales/ja.ts @@ -224,9 +224,6 @@ export default { layoutRecognizeTip: 'レイアウト分析のためにビジュアルモデルを使用し、文書の構造を理解しやすくします。詳細については、https://ragflow.io/docs/dataset_configuration#document-parsing-configuration をご覧ください。', - taskPageSize: 'タスクページサイズ', - taskPageSizeMessage: 'タスクページサイズを入力してください', - taskPageSizeTip: `レイアウト認識中、PDFファイルはチャンクに分割され、処理速度を向上させるために並列処理されます。`, addPage: 'ページを追加', greaterThan: '現在の値は終了ページより大きくなければなりません', @@ -253,8 +250,6 @@ export default { delimiterTip: 'デリミタやセパレータは、一つまたは複数の特殊文字で構成できます。複数の文字の場合、バッククォート(``)で囲むようにしてください。たとえば、デリミタを次のように設定した場合: \\n ## ;、テキストは行末、ダブルハッシュ記号(##)、およびセミコロンで分割されます。デリミタを設定する前に、テキストのセグメンテーションとチャンキングのメカニズムを理解していることを確認してください。', - html4excel: 'ExcelをHTMLに変換', - html4excelTip: `General切片方法と併用してください。無効の場合、表計算ファイル(XLSX、XLS(Excel 97-2003))は行ごとにキーと値のペアとして解析されます。有効の場合、表計算ファイルはHTML表として解析されます。元の表が12行を超える場合、システムは自動的に12行ごとに複数のHTML表に分割します。詳細については、https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration をご覧ください。`, autoKeywords: '自動キーワード', autoKeywordsTip: `各チャンクに含まれるキーワードのランキングを向上させるために、自動的にN個のキーワードを抽出します。「システムモデル設定」で指定されたチャットモデルによって追加のトークンが消費されることに注意してください。チャンクリストから追加されたキーワードを確認または更新することができます。詳細は https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration をご覧ください。`, autoQuestions: '自動質問', diff --git a/web/src/locales/ko.ts b/web/src/locales/ko.ts index 05ec780c5a..5a235898b4 100644 --- a/web/src/locales/ko.ts +++ b/web/src/locales/ko.ts @@ -544,9 +544,6 @@ export default { layoutRecognize: 'PDF 파서', layoutRecognizeTip: '비전 모델을 사용하여 PDF 레이아웃을 분석하고 문서 제목, 텍스트 블록, 이미지 및 표를 효과적으로 찾습니다. Naive 옵션을 선택하면 PDF의 일반 텍스트만 검색됩니다. 이 옵션은 현재 PDF 문서에만 적용됩니다.', - taskPageSize: '작업 페이지 크기', - taskPageSizeMessage: '작업 페이지 크기를 입력해 주세요', - taskPageSizeTip: `레이아웃 인식 중 PDF 파일은 처리 속도를 높이기 위해 chunk로 분할되어 병렬로 처리됩니다. 이 파라미터는 각 chunk의 크기를 설정합니다. chunk 크기가 클수록 페이지 간에 연속적인 텍스트가 분리될 가능성이 낮아집니다.`, addPage: '페이지 추가', greaterThan: '현재 값은 끝 값보다 커야 합니다', greaterThanPrevious: '현재 값은 이전 끝 값보다 커야 합니다', @@ -572,8 +569,6 @@ export default { childrenDelimiterTip: '구분자는 하나 또는 여러 특수 문자로 구성될 수 있습니다. 여러 문자인 경우 백틱(` `)으로 감싸야 합니다. 예를 들어 구분자를 \\n`##`;으로 설정하면 줄바꿈, 이중 해시 기호(##), 세미콜론에서 텍스트가 분리됩니다.', - html4excel: 'Excel을 HTML로', - html4excelTip: `일반 chunking 방법과 함께 사용합니다. 비활성화 시 데이터셋의 스프레드시트(XLSX 또는 XLS(Excel 97-2003))는 키-값 쌍으로 파싱됩니다. 활성화 시 HTML 표로 파싱되며, 원래 표가 12행을 초과하면 12행마다 분리됩니다. 자세한 내용은 https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration 을 참조하세요.`, autoKeywords: '자동 키워드', autoKeywordsTip: `각 chunk에서 N개의 키워드를 자동으로 추출하여 해당 키워드가 포함된 쿼리에서의 순위를 높입니다. '설정'에서 지정된 인덱싱 모델이 추가 토큰을 소비합니다. chunk 목록에서 추가된 키워드를 확인하거나 업데이트할 수 있습니다. 자세한 내용은 https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration 을 참조하세요.`, autoQuestions: '자동 질문', diff --git a/web/src/locales/pt-br.ts b/web/src/locales/pt-br.ts index 6deec2b10c..f767eb82b9 100644 --- a/web/src/locales/pt-br.ts +++ b/web/src/locales/pt-br.ts @@ -151,10 +151,6 @@ export default { layoutRecognize: 'Reconhecimento de layout', layoutRecognizeTip: 'Use modelos visuais para análise de layout para entender melhor a estrutura do documento e localizar efetivamente títulos, blocos de texto, imagens e tabelas. Se desativado, apenas o texto simples no PDF será recuperado. Para mais informações, acesse https://ragflow.io/docs/dataset_configuration#document-parsing-configuration.', - taskPageSize: 'Tamanho da página da tarefa', - taskPageSizeMessage: 'Por favor, insira o tamanho da página da tarefa!', - taskPageSizeTip: - 'Durante o reconhecimento de layout, um arquivo PDF é dividido em fragmentos e processado em paralelo para aumentar a velocidade de processamento. Este parâmetro define o tamanho de cada fragmento. Um tamanho de fragmento maior reduz a probabilidade de dividir texto contínuo entre páginas.', addPage: 'Adicionar página', greaterThan: 'O valor atual deve ser maior que!', greaterThanPrevious: 'O valor atual deve ser maior que o anterior!', @@ -177,9 +173,6 @@ export default { delimiter: 'Delimitadores para segmentação de texto', delimiterTip: 'Um delimitador ou separador pode consistir em um ou vários caracteres especiais. Se for múltiplos caracteres, certifique-se de que estejam entre crases (``). Por exemplo, se você configurar seus delimitadores assim: \\n`##`;, seus textos serão separados em quebras de linha, símbolos de hash duplo (##) ou ponto e vírgula. Defina os delimitadores apenas após entender o mecanismo de segmentação e particionamento de texto.', - html4excel: 'Excel para HTML', - html4excelTip: - 'Use em conjunto com o método de fragmentação General. Quando desativado, arquivos de planilhas (XLSX, XLS (Excel 97-2003)) serão analisados linha por linha como pares chave-valor. Quando ativado, os arquivos de planilhas serão convertidos em tabelas HTML. Se a tabela original tiver mais de 12 linhas, o sistema dividirá automaticamente em várias tabelas HTML a cada 12 linhas. Para mais informações, consulte https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.', autoKeywords: 'Palavras-chave automáticas', autoKeywordsTip: 'Extraia automaticamente N palavras-chave de cada bloco para aumentar sua classificação em consultas que contenham essas palavras-chave. Esteja ciente de que o modelo de chat especificado nas "Configurações do modelo do sistema" consumirá tokens adicionais. Você pode verificar ou atualizar as palavras-chave adicionadas a um bloco na lista de blocos. Para mais detalhes, consulte https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.', diff --git a/web/src/locales/ru.ts b/web/src/locales/ru.ts index 8d9e030232..d14a5a5771 100644 --- a/web/src/locales/ru.ts +++ b/web/src/locales/ru.ts @@ -383,9 +383,6 @@ export default { layoutRecognize: 'PDF парсер', layoutRecognizeTip: 'Используйте визуальную модель для анализа макета PDF для эффективного определения заголовков документов, текстовых блоков, изображений и таблиц. Если выбран наивный вариант, будет извлекаться только простой текст из PDF. Обратите внимание, что эта опция в настоящее время работает ТОЛЬКО для PDF-документов.', - taskPageSize: 'Размер страницы задачи', - taskPageSizeMessage: 'Пожалуйста, введите размер страницы задачи!', - taskPageSizeTip: `Во время распознавания макета PDF-файл разбивается на части и обрабатывается параллельно для увеличения скорости обработки. Этот параметр устанавливает размер каждой части. Больший размер части снижает вероятность разделения непрерывного текста между страницами.`, addPage: 'Добавить страницу', greaterThan: 'Текущее значение должно быть больше, чем "до"!', greaterThanPrevious: @@ -412,8 +409,6 @@ export default { childrenDelimiterTip: 'Разделитель может состоять из одного или нескольких специальных символов. Если это несколько символов, убедитесь, что они заключены в обратные кавычки (``). Например, если вы настроите разделители так: \\n`##`;, то ваш текст будет разделен по переводам строк, двойным символам решетки (##) и точкам с запятой.', - html4excel: 'Excel в HTML', - html4excelTip: `Используется с методом чанкинга General. Когда отключено, электронные таблицы (XLSX или XLS (Excel 97-2003)) в базе знаний будут разобраны в пары ключ-значение. Когда включено, они будут разобраны в HTML таблицы, разделяя каждые 12 строк, если исходная таблица имеет более 12 строк. Подробности см. на https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.`, autoKeywords: 'Авто-ключевые слова', autoKeywordsTip: `Автоматически извлекает N ключевых слов для каждого чанка, чтобы повысить их рейтинг для запросов, содержащих эти ключевые слова. Имейте в виду, что дополнительные токены будут потребляться чат-моделью, указанной в 'Системных настройках модели'. Вы можете проверить или обновить добавленные ключевые слова для чанка из списка чанков. Подробности см. на https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Авто-вопросы', diff --git a/web/src/locales/tr.ts b/web/src/locales/tr.ts index 3c915797de..9202a40296 100644 --- a/web/src/locales/tr.ts +++ b/web/src/locales/tr.ts @@ -636,9 +636,6 @@ Prosedürel Bellek: Öğrenilen beceriler, alışkanlıklar ve otomatik prosedü layoutRecognize: 'PDF ayrıştırıcı', layoutRecognizeTip: "PDF düzen analizi için görsel model kullanın. Belge başlıklarını, metin bloklarını, görüntüleri ve tabloları etkili bir şekilde konumlandırır. Naive seçeneği seçilirse yalnızca PDF'deki düz metin alınır. Bu seçeneğin şu anda YALNIZCA PDF belgeleri için çalıştığını lütfen unutmayın.", - taskPageSize: 'Görev sayfa boyutu', - taskPageSizeMessage: 'Lütfen görev sayfa boyutunu girin!', - taskPageSizeTip: `Düzen tanıma sırasında bir PDF dosyası parçalara bölünür ve işleme hızını artırmak için paralel olarak işlenir. Bu parametre her parçanın boyutunu ayarlar. Daha büyük parça boyutu, sayfalar arasındaki sürekli metni bölme olasılığını azaltır.`, addPage: 'Sayfa ekle', greaterThan: 'Geçerli değer bitiş değerinden büyük olmalıdır!', greaterThanPrevious: @@ -668,8 +665,6 @@ Prosedürel Bellek: Öğrenilen beceriler, alışkanlıklar ve otomatik prosedü delimiterPreviewEmpty: 'Sınırlayıcı yok — metin yalnızca boyuta göre parçalanacak.', delimiterPreviewCount: '({{count}})', - html4excel: "Excel'i HTML'ye dönüştür", - html4excelTip: `Genel parçalama yöntemi ile kullanın. Devre dışı bırakıldığında, datasetteki elektronik tablolar (XLSX veya XLS(Excel 97-2003)) anahtar-değer çiftlerine ayrıştırılır. Etkinleştirildiğinde HTML tablolarına ayrıştırılır; orijinal tabloda 12'den fazla satır varsa her 12 satırda bölünür. Ayrıntılar için bkz. https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.`, autoKeywords: 'Otomatik anahtar kelime', autoKeywordsTip: `Her parça için otomatik olarak N anahtar kelime çıkarır ve o anahtar kelimeleri içeren sorgular için sıralamalarını artırır. 'Yapılandırma'da belirtilen indeksleme modeli tarafından ekstra tokenlar tüketileceğini unutmayın. Bir parçaya eklenen anahtar kelimeleri parça listesinden kontrol edebilir veya güncelleyebilirsiniz. Ayrıntılar için bkz. https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Otomatik soru', diff --git a/web/src/locales/uz.ts b/web/src/locales/uz.ts index 6e7d2fdca2..fd726feefb 100644 --- a/web/src/locales/uz.ts +++ b/web/src/locales/uz.ts @@ -613,10 +613,6 @@ export default { layoutRecognize: 'PDF parseri', layoutRecognizeTip: 'PDF maketini tahlil qilish uchun vizual modeldan foydalanib, hujjat sarlavhalari, matn bloklari, rasmlari va jadvallarini aniq joylashtiradi. Naive varianti tanlansa, PDFdan faqat oddiy matn olinadi. E’tibor bering, bu variant hozircha FAQAT PDF hujjatlari uchun ishlaydi.', - taskPageSize: 'Vazifa sahifa hajmi', - taskPageSizeMessage: 'Iltimos, vazifa sahifa hajmini kiriting!', - taskPageSizeTip: - 'Maketni aniqlash paytida PDF fayli bo‘laklarga bo‘linadi va qayta ishlash tezligini oshirish uchun parallel qayta ishlanadi. Bu parametr har bir bo‘lak hajmini belgilaydi. Kattaroq bo‘lak hajmi sahifalar orasidagi uzluksiz matnni bo‘lib yuborish ehtimolini kamaytiradi.', addPage: 'Sahifa qo‘shish', greaterThan: 'Joriy qiymat "gacha" qiymatidan katta bo‘lishi kerak!', greaterThanPrevious: @@ -648,9 +644,6 @@ export default { delimiterPreviewEmpty: 'Ajratgichlar yo‘q — matn faqat hajm bo‘yicha bo‘laklanadi.', delimiterPreviewCount: '({{count}})', - html4excel: 'Excel’dan HTML’ga', - html4excelTip: - 'Umumiy bo‘laklash usuli bilan ishlatiladi. O‘chirilganda, to‘plamdagi elektron jadvallar (XLSX yoki XLS (Excel 97-2003)) kalit-qiymat juftliklariga tahlil qilinadi. Yoqilganda, ular HTML jadvallarga tahlil qilinadi va agar original jadval 12 qatordan ko‘p bo‘lsa, har 12 qatorda bo‘linadi. Tafsilotlar uchun https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration ga qarang.', autoKeywords: 'Ajratib olinadigan kalit so‘zlar soni', autoKeywordsTip: 'Har bir bo‘lak uchun N ta kalit so‘zni avtomatik ajratib olib, ushbu kalit so‘zlarni o‘z ichiga olgan so‘rovlar uchun ularning reytingini oshiradi. ‘Sozlash’da belgilangan indekslash modeli tomonidan qo‘shimcha tokenlar sarflanishini yodda tuting. Bo‘lak uchun qo‘shilgan kalit so‘zlarni bo‘laklar ro‘yxatidan tekshirishingiz yoki yangilashingiz mumkin. Tafsilotlar uchun https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration ga qarang.', diff --git a/web/src/locales/vi.ts b/web/src/locales/vi.ts index f862c16276..531f657da4 100644 --- a/web/src/locales/vi.ts +++ b/web/src/locales/vi.ts @@ -154,9 +154,6 @@ export default { layoutRecognize: 'Nhận dạng bố cục', layoutRecognizeTip: 'Sử dụng các mô hình trực quan để phân tích bố cục nhằm xác định tốt hơn cấu trúc tài liệu, tìm vị trí của tiêu đề, khối văn bản, hình ảnh và bảng. Nếu không có tính năng này, chỉ có thể lấy được văn bản thuần của PDF. Để biết thêm thông tin, hãy xem https://ragflow.io/docs/dataset_configuration#document-parsing-configuration.', - taskPageSize: 'Kích thước trang tác vụ', - taskPageSizeMessage: 'Vui lòng nhập kích thước trang tác vụ của bạn!', - taskPageSizeTip: `Nếu sử dụng nhận dạng bố cục, tệp PDF sẽ được chia thành các nhóm trang liên tiếp. Phân tích bố cục sẽ được thực hiện song song giữa các nhóm để tăng tốc độ xử lý. 'Kích thước trang tác vụ' xác định kích thước của các nhóm. Kích thước trang càng lớn, khả năng chia tách văn bản liên tục giữa các trang thành các khối khác nhau càng thấp.`, addPage: 'Thêm trang', greaterThan: 'Giá trị hiện tại phải lớn hơn!', greaterThanPrevious: 'Giá trị hiện tại phải lớn hơn giá trị trước đó!', @@ -174,8 +171,6 @@ export default { topK: 'Top-K', topKTip: `Sử dụng cùng với Rerank model, thiết lập này xác định số lượng đoạn văn cần gửi đến mô hình reranking được chỉ định.`, delimiter: 'Dấu phân cách cho phân đoạn văn bản', - html4excel: 'Excel sang HTML', - html4excelTip: `Sử dụng cùng với phương pháp cắt khúc General. Khi chưa được bật, tệp bảng tính (XLSX, XLS (Excel 97-2003)) sẽ được phân tích theo dòng thành các cặp khóa-giá trị. Khi bật, tệp bảng tính sẽ được phân tích thành bảng HTML. Nếu bảng gốc vượt quá 12 dòng, hệ thống sẽ tự động chia thành nhiều bảng HTML mỗi 12 dòng. Để biết thêm thông tin, vui lòng xem https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration.`, autoKeywords: 'Từ khóa tự động', autoKeywordsTip: `Tự động trích xuất N từ khóa cho mỗi khối để tăng thứ hạng của chúng trong các truy vấn chứa các từ khóa đó. Lưu ý rằng các token bổ sung sẽ được tiêu thụ bởi mô hình trò chuyện được chỉ định trong "Cài đặt mô hình hệ thống". Bạn có thể kiểm tra hoặc cập nhật các từ khóa đã thêm cho một khối từ danh sách khối. Để biết chi tiết, vui lòng xem https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration.`, autoQuestions: 'Câu hỏi tự động', diff --git a/web/src/locales/zh-traditional.ts b/web/src/locales/zh-traditional.ts index 7659e9a753..baeb024ed3 100644 --- a/web/src/locales/zh-traditional.ts +++ b/web/src/locales/zh-traditional.ts @@ -155,9 +155,6 @@ export default { layoutRecognize: 'PDF解析器', layoutRecognizeTip: '使用視覺模型進行 PDF 布局分析,以更好地識別文檔結構,找到標題、文字塊、圖像和表格的位置。若選擇 Naive 選項,則只能取得 PDF 的純文字。請注意此功能僅適用於 PDF 文檔,對其他文檔不生效。如需更多資訊,請參閱 https://ragflow.io/docs/dataset_configuration#document-parsing-configuration。', - taskPageSize: '任務頁面大小', - taskPageSizeMessage: '請輸入您的任務頁面大小!', - taskPageSizeTip: `如果使用佈局識別,PDF 文件將被分成連續的組。佈局分析將在組之間並行執行,以提高處理速度。“任務頁面大小”決定組的大小。頁面大小越大,將頁面之間的連續文本分割成不同塊的機會就越低。`, addPage: '新增頁面', greaterThan: '當前值必須大於起始值!', greaterThanPrevious: '當前值必須大於之前的值!', @@ -181,8 +178,6 @@ export default { childrenDelimiter: '文字分段標識符', childrenDelimiterTip: '支持多字符作為分隔符,多字符用兩個反引號 \\`\\` 分隔符包裹。若配置成:\\n`##`; 系統將首先使用換行符、兩個#號以及分號先對文本進行分割,隨後再對分得的小文本塊按照「建議文字塊大小」設定的大小進行拼裝。在設定文字分段標識符前請確保理解上述文字分段切片機制。', - html4excel: '表格轉HTML', - html4excelTip: `與 General 切片方法配合使用。未開啟狀態下,表格檔案(XLSX、XLS(Excel 97-2003)會按行解析為鍵值對。開啟後,表格檔案會被解析為 HTML 表格。若原始表格超過 12 行,系統會自動按每 12 行拆分為多個 HTML 表格。欲了解更多資訊,請參閱 https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration。`, autoKeywords: '自動關鍵字擷取數', autoKeywordsTip: `自動為每個文字區塊中提取 N 個關鍵詞,以提升查詢精度。請注意:此功能採用「系統模型設定」中設定的預設聊天模型提取關鍵詞,因此也會產生更多 Token 消耗。此外,你也可以手動更新生成的關鍵詞。詳情請參見 https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration。`, autoQuestions: '自動問題擷取數', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index c130297e43..3ec5a0d308 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -577,9 +577,6 @@ export default { layoutRecognize: 'PDF解析器', layoutRecognizeTip: '使用视觉模型进行 PDF 布局分析,以更好地识别文档结构,找到标题、文本块、图像和表格的位置。 如果选择 Naive 选项,则只能获取 PDF 的纯文本。请注意该功能只适用于 PDF 文档,对其他文档不生效。欲了解更多信息,请参阅 https://ragflow.io/docs/dataset_configuration#document-parsing-configuration。', - taskPageSize: '任务页面大小', - taskPageSizeMessage: '请输入任务页面大小!', - taskPageSizeTip: `如果使用布局识别,PDF 文件将被分成连续的组。 布局分析将在组之间并行执行,以提高处理速度。 “任务页面大小”决定组的大小。 页面大小越大,将页面之间的连续文本分割成不同块的机会就越低。`, addPage: '新增页面', greaterThan: '当前值必须大于起始值!', greaterThanPrevious: '当前值必须大于之前的值!', @@ -608,8 +605,6 @@ export default { delimiterPreviewEmpty: '没有分隔符——文本将仅按大小切分。', delimiterPreviewCount: '({{count}})', - html4excel: '表格转 HTML', - html4excelTip: `与 General 切片方法配合使用。未开启状态下,表格文件(XLSX、XLS(Excel 97-2003))会按行解析为键值对。开启后,表格文件会被解析为 HTML 表格。若原始表格超过 12 行,系统会自动按每 12 行拆分为多个 HTML 表格。欲了解更多详情,请参阅 https://ragflow.io/docs/dataset_configuration#other-format-processing-configuration。`, autoKeywords: '自动关键词提取数', autoKeywordsTip: `自动为每个文本块中提取 N 个关键词,用以提升查询精度。请注意:该功能采用在“配置”中指定的索引模型提取关键词,因此也会产生更多 Token 消耗。另外,你也可以手动更新生成的关键词。详情请见 https://ragflow.io/docs/dataset_configuration#content-enhancement-configuration。`, autoQuestions: '自动问题提取数',