feat: Add PDF file support for OpenAI vision models (#7217)
* feat: add base64 PDF support for OpenAI vision models Signed-off-by: MurphyLo <1335758958@qq.com> * sort imports in OpenAIResponseAPIClient.ts * sort imports in OpenAIResponseAPIClient.ts * remove pdf-parse * modify pdfPageCount implementation to use officeparser built-in pdf.js * chore: update yarn.lock to remove pdf-parse dependency --------- Signed-off-by: MurphyLo <1335758958@qq.com> Co-authored-by: suyao <sy20010504@gmail.com>
This commit is contained in:
@@ -15,6 +15,7 @@ import * as fs from 'fs'
|
||||
import { writeFileSync } from 'fs'
|
||||
import { readFile } from 'fs/promises'
|
||||
import officeParser from 'officeparser'
|
||||
import { getDocument } from 'officeparser/pdfjs-dist-build/pdf.js'
|
||||
import * as path from 'path'
|
||||
import { chdir } from 'process'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
@@ -321,6 +322,16 @@ class FileStorage {
|
||||
return { data: base64, mime }
|
||||
}
|
||||
|
||||
public pdfPageCount = async (_: Electron.IpcMainInvokeEvent, id: string): Promise<number> => {
|
||||
const filePath = path.join(this.storageDir, id)
|
||||
const buffer = await fs.promises.readFile(filePath)
|
||||
|
||||
const doc = await getDocument({ data: buffer }).promise
|
||||
const pages = doc.numPages
|
||||
await doc.destroy()
|
||||
return pages
|
||||
}
|
||||
|
||||
public binaryImage = async (_: Electron.IpcMainInvokeEvent, id: string): Promise<{ data: Buffer; mime: string }> => {
|
||||
const filePath = path.join(this.storageDir, id)
|
||||
const data = await fs.promises.readFile(filePath)
|
||||
|
||||
Reference in New Issue
Block a user