? ?最近在做部門知識庫,選用的dify,作為rag的工具,但是經過多個對比,最后發現,
比較好用的是,納米搜索,但是可惜納米搜索無法在內網使用,無法把知識庫放到本地,導致
有信息安全問題無法使用。
? ? 再則,知識庫文件導入的時候,測試發現excel文件,直接導入,不如直接轉換成pdf文件導入效果要好,納米搜索對文檔的解析,效果更好一些。但是轉換pdf文件,如果使用微軟的excel,效果不好,只能轉換當前頁,使用wps效果很好,可以轉換所有頁,但是,一個一個的去轉換效果太慢了。所以自己就做了一個批量,把excel文件轉換為pdf的腳本,其實就是一個powershell的腳本文件,直接右鍵運行就可以了。運行之前,先打開一個excel文件,待處理的。
? ? 然后等待腳本自動處理就可以了。
# 利用wps自動保存為pdf
# 做知識庫用,知識庫中對pdf的支持會更好一些。AutoKeyPress.ps1
Add-Type -TypeDefinition @'
using System;
using System.Runtime.InteropServices;# Mouse鼠標操作
public class MouseAction {[DllImport("user32.dll")]public static extern bool SetCursorPos(int X, int Y);[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo);private const uint MOUSEEVENTF_LEFTDOWN = 0x02;private const uint MOUSEEVENTF_LEFTUP = 0x04;private const uint MOUSEEVENTF_RIGHTDOWN = 0x08;private const uint MOUSEEVENTF_RIGHTUP = 0x10;public static void LeftClick() {mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);}public static void RightClick() {mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);}public static void LeftClickAt(int x, int y) {SetCursorPos(x, y);mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);}public static void RightClickAt(int x, int y) {SetCursorPos(x, y);mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);}
}
'@$WShell = New-Object -ComObject wscript.shellwhile($true) {Start-Sleep -Seconds 4# Alt+F 先打開一個文件excel,然后,在文件列表選中最后一個,他會一個個向上處理# 打開文件以后,首先按下alt+f 打開文件 菜單$WShell.SendKeys("%f")Start-Sleep -Seconds 2# A 按下A,選中另存為$WShell.SendKeys("a")Start-Sleep -Seconds 1# M 按下M,打開另存為的窗口$WShell.SendKeys("m")Start-Sleep -Seconds 1# Tab 然后tab選中要保存的格式選項$WShell.SendKeys("{TAB}")Start-Sleep -Seconds 1# End 找到pdf格式$WShell.SendKeys("{END}")Start-Sleep -Seconds 1# Alt+S 保存pdf文件開始$WShell.SendKeys("%s")Start-Sleep -Seconds 6# Enter 關閉 pdf保存完成窗口 保存以后關閉pdf窗口$WShell.SendKeys("{ENTER}")Start-Sleep -Seconds 1#關閉當前文檔 處理以后 關閉當前文檔$WShell.SendKeys("^w")Start-Sleep -Seconds 1#然后按下n,關閉當前文檔$WShell.SendKeys("n")Start-Sleep -Seconds 1# Alt+Tab# 然后按下alt+tab這個不用了,之前用的#$WShell.SendKeys("%{TAB}")#Start-Sleep -Seconds 3#然后打開運行窗口# 創建 Shell.Application 對象并調用 FileRun 方法# 這里是打開運行,運行中注意,默認要顯示需要打開的文件夾$shell = New-Object -ComObject "Shell.Application"$shell.FileRun()Start-Sleep -Seconds 1#這里就打開對應的運行顯示的文件夾 運行中要提前把對應的文件夾路徑貼里面去$WShell.SendKeys("{ENTER}")Start-Sleep -Seconds 1#按下鼠標左鍵,選中當前的文件# 左鍵單擊當前位置#[MouseAction]::LeftClick()# 發送Alt+D(定位到地址欄)#這個是為了定位到文件列表 $wshell.SendKeys("%d")Start-Sleep -Milliseconds 200# 發送3次Tab鍵(切換到文件列表)$wshell.SendKeys("{TAB}")Start-Sleep -Milliseconds 100$wshell.SendKeys("{TAB}")Start-Sleep -Milliseconds 100$wshell.SendKeys("{TAB}")#向上選擇 處理下一個文件# Up Arrow$WShell.SendKeys("{UP}")Start-Sleep -Seconds 2#按下enter打開下一個文件# Enter$WShell.SendKeys("{ENTER}")# 停頓2秒Start-Sleep -Seconds 2
}