@xberg-io/opencode-xberg 1.3.8 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/ai-rulez-bundle.json +17 -16
- package/.opencode/ai-rulez-content.js +3 -3
- package/.opencode/commands/xberg-extract.md +3 -3
- package/.opencode/commands/xberg-ocr.md +3 -3
- package/.opencode/plugins/xberg.js +1 -1
- package/.opencode/skills/xberg/SKILL.md +20 -25
- package/.opencode/skills/xberg/index.md +10 -0
- package/.opencode/skills/xberg/references/advanced-features.md +1 -1
- package/.opencode/skills/xberg/references/cli-reference.md +6 -4
- package/.opencode/skills/xberg/references/configuration.md +6 -6
- package/.opencode/skills/xberg/references/nodejs-api.md +1 -1
- package/.opencode/skills/xberg/references/other-bindings.md +1 -1
- package/.opencode/skills/xberg/references/python-api.md +6 -6
- package/.opencode/skills/xberg/references/rust-api.md +5 -5
- package/.opencode/skills/xberg/references/supported-formats.md +1 -1
- package/.opencode/skills/{batch-extraction → xberg-batch-extraction}/SKILL.md +11 -9
- package/.opencode/skills/xberg-batch-extraction/index.md +10 -0
- package/.opencode/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-batch-extraction/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.opencode/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.opencode/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/{.pi/skills/chunking → .opencode/skills/xberg-chunking}/SKILL.md +5 -5
- package/.opencode/skills/xberg-chunking/index.md +10 -0
- package/.opencode/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-chunking/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-chunking/references/configuration.md +587 -0
- package/.opencode/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-chunking/references/python-api.md +657 -0
- package/.opencode/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.opencode/skills/{extracting-keywords → xberg-extracting-keywords}/SKILL.md +7 -8
- package/.opencode/skills/xberg-extracting-keywords/index.md +10 -0
- package/.opencode/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-keywords/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/{.pi/skills/extracting-tables → .opencode/skills/xberg-extracting-tables}/SKILL.md +4 -5
- package/.opencode/skills/xberg-extracting-tables/index.md +10 -0
- package/.opencode/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-tables/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/{.pi/skills/extracting-with-ocr → .opencode/skills/xberg-extracting-with-ocr}/SKILL.md +5 -6
- package/.opencode/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.opencode/skills/{picking-a-format → xberg-picking-a-format}/SKILL.md +4 -4
- package/.opencode/skills/xberg-picking-a-format/index.md +10 -0
- package/.opencode/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-picking-a-format/references/cli-reference.md +464 -0
- package/.opencode/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.opencode/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.opencode/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/.pi/prompts/xberg-extract.md +1 -1
- package/.pi/prompts/xberg-ocr.md +1 -1
- package/.pi/skills/xberg/SKILL.md +20 -25
- package/.pi/skills/xberg/index.md +10 -0
- package/.pi/skills/xberg/references/advanced-features.md +1 -1
- package/.pi/skills/xberg/references/cli-reference.md +6 -4
- package/.pi/skills/xberg/references/configuration.md +6 -6
- package/.pi/skills/xberg/references/nodejs-api.md +1 -1
- package/.pi/skills/xberg/references/other-bindings.md +1 -1
- package/.pi/skills/xberg/references/python-api.md +6 -6
- package/.pi/skills/xberg/references/rust-api.md +5 -5
- package/.pi/skills/xberg/references/supported-formats.md +1 -1
- package/.pi/skills/{batch-extraction → xberg-batch-extraction}/SKILL.md +11 -9
- package/.pi/skills/xberg-batch-extraction/index.md +10 -0
- package/.pi/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-batch-extraction/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.pi/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.pi/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.pi/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/{.opencode/skills/chunking → .pi/skills/xberg-chunking}/SKILL.md +5 -5
- package/.pi/skills/xberg-chunking/index.md +10 -0
- package/.pi/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-chunking/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-chunking/references/configuration.md +587 -0
- package/.pi/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-chunking/references/python-api.md +657 -0
- package/.pi/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.pi/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.pi/skills/{extracting-keywords → xberg-extracting-keywords}/SKILL.md +7 -8
- package/.pi/skills/xberg-extracting-keywords/index.md +10 -0
- package/.pi/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-keywords/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/{.opencode/skills/extracting-tables → .pi/skills/xberg-extracting-tables}/SKILL.md +4 -5
- package/.pi/skills/xberg-extracting-tables/index.md +10 -0
- package/.pi/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-tables/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/{.opencode/skills/extracting-with-ocr → .pi/skills/xberg-extracting-with-ocr}/SKILL.md +5 -6
- package/.pi/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.pi/skills/{picking-a-format → xberg-picking-a-format}/SKILL.md +4 -4
- package/.pi/skills/xberg-picking-a-format/index.md +10 -0
- package/.pi/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-picking-a-format/references/cli-reference.md +464 -0
- package/.pi/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.pi/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.pi/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.pi/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/README.md +75 -9
- package/assets/icon.svg +16 -9
- package/assets/logo.png +0 -0
- package/package.json +136 -21
- package/scripts/mcp-launch.sh +6 -5
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
|
|
3
|
+
Content-Hash: blake3:dacb4d7def21681b8b237603d2c7b89beaf18b8ee4110175b6ea5593022f3229
|
|
4
|
+
Source-Hash: blake3:ab2bcd453f9c2ded67752f6a9800186d42b6921f4be16f6ab3a773254a9fba00
|
|
5
|
+
Schema-Version: v1
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Language Bindings Reference
|
|
9
|
+
|
|
10
|
+
Xberg provides bindings for Python, TypeScript/Node.js, Ruby, PHP, Go, Java, C#, Elixir, WebAssembly, Dart, Kotlin Android, Swift, Zig, and C. Platform and packaging support varies by binding.
|
|
11
|
+
|
|
12
|
+
Every binding shares the same shape: build an **`ExtractInput`** (from a URI or bytes), pass it with an **`ExtractionConfig`** to `extract` (or `extract_batch`), and read per-document data from the result **envelope's `results` array** (index `[0]` for a single input). WASM follows the same shape — its `extract` returns a `WasmExtractionResult` envelope with a `results` array, not the document directly.
|
|
13
|
+
|
|
14
|
+
## Go
|
|
15
|
+
|
|
16
|
+
**Installation:**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
go get github.com/xberg-io/xberg/packages/go
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Basic Extraction:**
|
|
23
|
+
|
|
24
|
+
```go
|
|
25
|
+
package main
|
|
26
|
+
|
|
27
|
+
import (
|
|
28
|
+
"fmt"
|
|
29
|
+
"log"
|
|
30
|
+
|
|
31
|
+
"github.com/xberg-io/xberg/packages/go"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
func main() {
|
|
35
|
+
input := xberg.ExtractInputFromURI("document.pdf")
|
|
36
|
+
result, err := xberg.Extract(*input, xberg.ExtractionConfig{})
|
|
37
|
+
if err != nil {
|
|
38
|
+
log.Fatalf("extract failed: %v", err)
|
|
39
|
+
}
|
|
40
|
+
fmt.Println(result.Results[0].Content)
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**With OCR** (config fields are pointers):
|
|
45
|
+
|
|
46
|
+
```go
|
|
47
|
+
ocrConfig := &xberg.OcrConfig{Backend: "tesseract", Language: []string{"eng"}}
|
|
48
|
+
config := xberg.ExtractionConfig{Ocr: ocrConfig}
|
|
49
|
+
|
|
50
|
+
input := xberg.ExtractInputFromURI("scanned.pdf")
|
|
51
|
+
result, err := xberg.Extract(*input, config)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See the [Go binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/go) for the complete API reference.
|
|
55
|
+
|
|
56
|
+
## Ruby
|
|
57
|
+
|
|
58
|
+
**Installation:**
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
gem install xberg
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Or in your Gemfile:
|
|
65
|
+
|
|
66
|
+
```ruby
|
|
67
|
+
gem 'xberg'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Basic Extraction:**
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
require 'xberg'
|
|
74
|
+
|
|
75
|
+
input = Xberg::ExtractInput.new(uri: 'document.pdf')
|
|
76
|
+
config = Xberg::ExtractionConfig.new
|
|
77
|
+
result = Xberg.extract(input, config)
|
|
78
|
+
puts result.results.first.content
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**With OCR:**
|
|
82
|
+
|
|
83
|
+
```ruby
|
|
84
|
+
config = Xberg::ExtractionConfig.new(
|
|
85
|
+
ocr: Xberg::OcrConfig.new(
|
|
86
|
+
backend: 'tesseract',
|
|
87
|
+
language: ['eng', 'fra'],
|
|
88
|
+
tesseract_config: Xberg::TesseractConfig.new(psm: 3)
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
result = Xberg.extract(Xberg::ExtractInput.new(uri: 'scanned.pdf'), config)
|
|
92
|
+
puts result.results.first.content
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
See the [Ruby binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/ruby) for the complete API reference.
|
|
96
|
+
|
|
97
|
+
## Java
|
|
98
|
+
|
|
99
|
+
**Installation:** add to your Maven `pom.xml` (the binding version tracks the core release, currently `1.1.0`):
|
|
100
|
+
|
|
101
|
+
```xml
|
|
102
|
+
<dependency>
|
|
103
|
+
<groupId>io.xberg</groupId>
|
|
104
|
+
<artifactId>xberg</artifactId>
|
|
105
|
+
<version>1.1.0</version>
|
|
106
|
+
</dependency>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Basic Extraction:**
|
|
110
|
+
|
|
111
|
+
```java
|
|
112
|
+
import io.xberg.Xberg;
|
|
113
|
+
import io.xberg.ExtractInput;
|
|
114
|
+
import io.xberg.ExtractInputKind;
|
|
115
|
+
import io.xberg.ExtractionConfig;
|
|
116
|
+
import io.xberg.ExtractionResult;
|
|
117
|
+
import io.xberg.ExtractedDocument;
|
|
118
|
+
|
|
119
|
+
public class Example {
|
|
120
|
+
public static void main(String[] args) throws Exception {
|
|
121
|
+
ExtractionResult output = Xberg.extract(
|
|
122
|
+
ExtractInput.builder().withKind(ExtractInputKind.Uri).withUri("document.pdf").build(),
|
|
123
|
+
ExtractionConfig.builder().build()
|
|
124
|
+
);
|
|
125
|
+
ExtractedDocument result = output.results().get(0);
|
|
126
|
+
System.out.println(result.content());
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**With OCR:**
|
|
132
|
+
|
|
133
|
+
```java
|
|
134
|
+
import io.xberg.OcrConfig;
|
|
135
|
+
import java.util.List;
|
|
136
|
+
|
|
137
|
+
ExtractionConfig config = ExtractionConfig.builder()
|
|
138
|
+
.withOcr(OcrConfig.builder().withBackend("tesseract").withLanguage(List.of("eng")).build())
|
|
139
|
+
.build();
|
|
140
|
+
ExtractionResult output = Xberg.extract(
|
|
141
|
+
ExtractInput.builder().withKind(ExtractInputKind.Uri).withUri("scanned.pdf").build(),
|
|
142
|
+
config
|
|
143
|
+
);
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
See the [Java binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/java) for the complete API reference.
|
|
147
|
+
|
|
148
|
+
## C#
|
|
149
|
+
|
|
150
|
+
**Installation:**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
dotnet add package XbergIo.Xberg
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Basic Extraction** (async):
|
|
157
|
+
|
|
158
|
+
```csharp
|
|
159
|
+
using Xberg;
|
|
160
|
+
|
|
161
|
+
var result = (await XbergConverter.ExtractAsync(
|
|
162
|
+
ExtractInput.FromUri("document.pdf"),
|
|
163
|
+
new ExtractionConfig())).Results[0];
|
|
164
|
+
Console.WriteLine(result.Content);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**With OCR:**
|
|
168
|
+
|
|
169
|
+
```csharp
|
|
170
|
+
using Xberg;
|
|
171
|
+
|
|
172
|
+
var config = new ExtractionConfig
|
|
173
|
+
{
|
|
174
|
+
Ocr = new OcrConfig { Backend = "tesseract", Language = ["eng"] }
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
var result = (await XbergConverter.ExtractAsync(
|
|
178
|
+
ExtractInput.FromUri("scanned.pdf"), config)).Results[0];
|
|
179
|
+
Console.WriteLine(result.Content);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
See the [C# binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/csharp) for the complete API reference.
|
|
183
|
+
|
|
184
|
+
## PHP
|
|
185
|
+
|
|
186
|
+
**Installation:**
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
composer require xberg-io/xberg
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Basic Extraction:**
|
|
193
|
+
|
|
194
|
+
```php
|
|
195
|
+
<?php
|
|
196
|
+
declare(strict_types=1);
|
|
197
|
+
|
|
198
|
+
require 'vendor/autoload.php';
|
|
199
|
+
|
|
200
|
+
use Xberg\XbergApi;
|
|
201
|
+
use Xberg\ExtractionConfig;
|
|
202
|
+
use Xberg\ExtractInput;
|
|
203
|
+
|
|
204
|
+
$output = XbergApi::extract(ExtractInput::fromUri('document.pdf'), ExtractionConfig::default());
|
|
205
|
+
$result = $output->results[0];
|
|
206
|
+
echo $result->content;
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**From bytes:**
|
|
210
|
+
|
|
211
|
+
```php
|
|
212
|
+
$output = XbergApi::extract(ExtractInput::fromBytes($fileData, $mimeType), ExtractionConfig::default());
|
|
213
|
+
$result = $output->results[0];
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**With OCR:**
|
|
217
|
+
|
|
218
|
+
```php
|
|
219
|
+
use Xberg\OcrConfig;
|
|
220
|
+
|
|
221
|
+
$ocrConfig = new OcrConfig(
|
|
222
|
+
enabled: true,
|
|
223
|
+
backend: 'tesseract',
|
|
224
|
+
language: ['eng'],
|
|
225
|
+
autoRotate: true,
|
|
226
|
+
vlmFallback: false,
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
$config = new ExtractionConfig(forceOcr: true, ocr: $ocrConfig);
|
|
230
|
+
|
|
231
|
+
$output = XbergApi::extract(ExtractInput::fromUri('scanned.pdf'), $config);
|
|
232
|
+
$result = $output->results[0];
|
|
233
|
+
echo $result->content;
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
See the [PHP binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/php) for the complete API reference.
|
|
237
|
+
|
|
238
|
+
## Elixir
|
|
239
|
+
|
|
240
|
+
**Installation:** add to your `mix.exs` dependencies (the binding version tracks the core release, currently `1.1.0`):
|
|
241
|
+
|
|
242
|
+
```elixir
|
|
243
|
+
def deps do
|
|
244
|
+
[
|
|
245
|
+
{:xberg, "~> 1.1.0"}
|
|
246
|
+
]
|
|
247
|
+
end
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Basic Extraction** (returns `{:ok, output}` / `{:error, reason}`):
|
|
251
|
+
|
|
252
|
+
```elixir
|
|
253
|
+
case Xberg.extract(input: %Xberg.ExtractInput{kind: :uri, uri: "document.pdf"}, config: nil) do
|
|
254
|
+
{:ok, output} ->
|
|
255
|
+
result = List.first(output.results)
|
|
256
|
+
IO.puts(result.content)
|
|
257
|
+
|
|
258
|
+
{:error, reason} ->
|
|
259
|
+
IO.puts("Error: #{reason}")
|
|
260
|
+
end
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**With OCR** (config may be a struct or a JSON string):
|
|
264
|
+
|
|
265
|
+
```elixir
|
|
266
|
+
config = ~s({"ocr": {"backend": "tesseract", "language": "eng"}})
|
|
267
|
+
|
|
268
|
+
{:ok, output} =
|
|
269
|
+
Xberg.extract(input: %Xberg.ExtractInput{kind: :uri, uri: "scanned.pdf"}, config: config)
|
|
270
|
+
|
|
271
|
+
result = List.first(output.results)
|
|
272
|
+
IO.puts(result.content)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
See the [Elixir binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/elixir) for the complete API reference.
|
|
276
|
+
|
|
277
|
+
## WebAssembly (WASM)
|
|
278
|
+
|
|
279
|
+
**Installation:**
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
npm install @xberg-io/xberg-wasm
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Basic Extraction:** the WASM build is bytes-based and must be initialized once with `initWasm()`. Like the native bindings, it returns a `WasmExtractionResult` envelope with a `results` array.
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
import { initWasm, extract } from "@xberg-io/xberg-wasm";
|
|
289
|
+
|
|
290
|
+
await initWasm();
|
|
291
|
+
|
|
292
|
+
const response = await fetch("document.pdf");
|
|
293
|
+
const data = new Uint8Array(await response.arrayBuffer());
|
|
294
|
+
|
|
295
|
+
const result = await extract({ kind: "bytes", bytes: data, mimeType: "application/pdf" }, undefined);
|
|
296
|
+
console.log(result.results[0].content);
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**With OCR:**
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
const config = { force_ocr: true, ocr: { backend: "tesseract", language: ["eng"] } };
|
|
303
|
+
const result = await extract({ kind: "bytes", bytes: data, mimeType: "application/pdf" }, config);
|
|
304
|
+
console.log(result.results[0].content);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Supports browsers, Deno, and Cloudflare Workers.
|
|
308
|
+
|
|
309
|
+
See the [WASM binding documentation](https://github.com/xberg-io/xberg/tree/main/packages/typescript) for the complete API reference.
|
|
310
|
+
|
|
311
|
+
## Docker
|
|
312
|
+
|
|
313
|
+
**Installation:** pull the official image from GitHub Container Registry:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
docker pull ghcr.io/xberg-io/xberg
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**API Server Mode:**
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
docker run -p 8000:8000 ghcr.io/xberg-io/xberg serve --host 0.0.0.0
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**CLI Mode:**
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
docker run -v $(pwd):/data ghcr.io/xberg-io/xberg extract /data/document.pdf
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**MCP Server Mode:**
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
docker run -i ghcr.io/xberg-io/xberg mcp
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
See the [Docker guide](https://docs.xberg.io/guides/docker/) for deployment details.
|
|
338
|
+
|
|
339
|
+
## Other Bindings
|
|
340
|
+
|
|
341
|
+
Bindings also ship for Dart/Flutter, Swift, Kotlin Android, Zig, and C FFI. Python and TypeScript/Node.js have dedicated references in this skill. See the per-language directories under [`packages/`](https://github.com/xberg-io/xberg/tree/main/packages) for exact installation and API details.
|
|
342
|
+
|
|
343
|
+
## Platform Support
|
|
344
|
+
|
|
345
|
+
Precompiled target support varies by binding. Refer to the main [README](https://github.com/xberg-io/xberg) for the current platform matrix.
|