Transformers documentation
UnlimitedOcr
Model ini dipublikasikan di HF papers pada 2026-06-23 dan disumbangkan ke Hugging Face Transformers pada 2026-10-14.
UnlimitedOcr
Ikhtisar
Model UnlimitedOcr diusulkan dalam Unlimited OCR Works oleh Youyang Yin, Huanhuan Liu, Qunyi Xie, Chaorun Liu, Shiqi Yang, Shaohua Wang, Zhanlong Liu, Hao Zou, Jinyue Chen, Shu Wei, Jingjing Wu, Mingxin Huang, Zhen Wu, Guibin Wang, Tengyu Du, dan Lei Jia dari Baidu Inc.
Ini adalah model tunggal dengan 3B parameter dan panjang konteks standar 32.768 token.
Abstrak dari makalah tersebut adalah sebagai berikut:
Baru-baru ini, model OCR end-to-end, yang diwakili oleh DeepSeek OCR, kembali menempatkan OCR di sorotan. Pandangan yang umum adalah bahwa penggunaan large language model (LLM) sebagai decoder memungkinkan model memanfaatkan distribusi prior bahasa, sehingga meningkatkan kinerja OCR. Namun, sisi negatifnya juga jelas: seiring bertambahnya panjang sekuens output, akumulasi KV cache meningkatkan konsumsi memori dan secara bertahap memperlambat proses generasi. Hal ini sangat bertentangan dengan manusia, yang tidak menunjukkan penurunan efisiensi pada tugas penyalinan jangka panjang. Dalam laporan teknis ini, kami mengusulkan Unlimited OCR, sebuah model yang dirancang untuk meniru working memory parsing manusia. Dengan mengambil DeepSeek OCR sebagai baseline, kami mengganti semua lapisan attention di decoder dengan Reference Sliding Window Attention (R-SWA) yang kami usulkan, yang mengurangi biaya komputasi attention sambil mempertahankan KV cache yang konstan selama seluruh proses decoding. Dengan menggabungkan rasio kompresi tinggi dari encoder DeepSeek OCR dengan desain KV cache konstan kami, Unlimited OCR dapat mentranskripsikan puluhan halaman dokumen dalam satu forward pass di bawah panjang maksimum standar 32K. Yang lebih penting, R-SWA adalah mekanisme attention parsing yang bersifat umum — di luar OCR, mekanisme ini juga dapat diterapkan pada tugas seperti ASR, penerjemahan, dan lain-lain. Kode dan bobot model tersedia secara publik di http://github.com/baidu/Unlimited-OCR
Unlimited-OCR mendukung dua konfigurasi inferensi: mode “gundum” (default) menggunakan tile 640x640 dengan pemotongan dinamis untuk dokumen resolusi tinggi, sedangkan mode “base” menggunakan tampilan global tunggal 1024x1024 untuk input resolusi standar. Untuk mengaktifkan mode base, atur crop_to_patches=False di processor, atau teruskan melalui processor_kwargs saat menggunakan apply_chat_template().
Menara visi mengikuti pendekatan dua tahap dari DeepSeek-OCR-2: encoder SAM ViT-B memberi masukan ke encoder CLIP ViT. Berbeda dengan DeepSeek-OCR-2, fitur CLIP juga digabungkan (concatenated) dengan fitur SAM untuk menghasilkan token gambar akhir. Unlimited-OCR juga mengabaikan patch queries yang dapat dipelajari (learnable) dari DeepSeek-OCR-2.
Model teks ini identik dengan DeepSeek-OCR-2 dengan tambahan Reference Sliding Window Attention (R-SWA). R-SWA hanya diterapkan pada token yang dihasilkan. Semua token gambar dan prompt tetap sepenuhnya terlihat selama proses decoding, sehingga dokumen panjang tidak kehilangan konteks dari halaman sebelumnya.
Model ini disumbangkan oleh guarin. Kode aslinya dapat ditemukan di sini.
Implementasi asli menjalankan model dengan torch.autocast dalam bfloat16. Bungkus panggilan forward dan generate dalam konteks autocast untuk mereproduksi output-nya.
with torch.autocast(device_type=model.device.type, dtype=torch.bfloat16): output = model.generate(**inputs)
from transformers import AutoProcessor, AutoModelForImageTextToText
model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
image = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
messages = [
{
"role": "user",
"content": [{"type": "image", "url": image}, {"type": "text", "text": "document parsing."}],
}
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt"
).to(model.device, model.dtype)
output = model.generate(**inputs, max_new_tokens=512)
processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
# image [383, 87, 497, 171]\ntext [333, 201, 558, 230]R&D QUALITY IMPROVEMENT\nSUGGESTION/SOLUTION FORM...
# All bounding boxes are in (x1, y1, x2, y2) format with coordinates normalized to [0, 999]Pemrosesan batch
Untuk pemrosesan batch, berikan daftar pesan. Atur padding=True untuk processor jika gambar memiliki ukuran yang berbeda.
from transformers import AutoProcessor, AutoModelForImageTextToText
model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
image1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
image2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg"
messages = [
[
{
"role": "user",
"content": [{"type": "image", "url": image}, {"type": "text", "text": "document parsing."}],
}
]
for image in [image1, image2]
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
processor_kwargs={"padding": True},
).to(model.device, model.dtype)
output = model.generate(**inputs)
processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
# image [383, 87, 497, 171]\ntext [333, 201, 558, 230]R&D QUALITY IMPROVEMENT\nSUGGESTION/SOLUTION FORM...
# All bounding boxes are in (x1, y1, x2, y2) format with coordinates normalized to [0, 999]Deteksi wilayah
Setel skip_special_tokens=False untuk membungkus semua deteksi dan jenis region dengan penanda <|det|>...<|/det|>. Hal ini berguna untuk pemrosesan lanjutan (post-processing) pada output, misalnya untuk menggambar kotak batas (bounding box) yang terdeteksi pada gambar. Setiap deteksi dibungkus sebagai <|det|>region_type [x1, y1, x2, y2]<|/det|>text... dengan koordinat yang dinormalisasi ke rentang [0, 999]. Setel return_detections=True untuk mendapatkan daftar tambahan berisi kamus (dictionary) dengan semua deteksi yang diurai (parsed) sebagai {"region_type": region_type, "box": [x1, y1, x2, y2], "text": "..."}.
from transformers import AutoProcessor, AutoModelForImageTextToText
model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
image = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
messages = [
{
"role": "user",
"content": [{"type": "image", "url": image}, {"type": "text", "text": "document parsing."}],
}
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt"
).to(model.device, model.dtype)
output = model.generate(**inputs)
decoded, detections = processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=False, return_detections=True)
# <|det|>image [383, 87, 497, 171]<|/det|>\n<|det|>text [333, 201, 558, 230]<|/det|>R&D QUALITY IMPROVEMENT\nSUGGESTION/SOLUTION FORM...
# Visualization
import random
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from transformers.image_utils import load_image
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg")
width, height = image.size
figure, axis = plt.subplots(figsize=(10, 12))
axis.imshow(image)
for detection in detections:
region_type = detection["region_type"]
x1, y1, x2, y2 = detection["box"]
x1, y1, x2, y2 = int(x1) / 999 * width, int(y1) / 999 * height, int(x2) / 999 * width, int(y2) / 999 * height
color = (random.random(), random.random(), random.random())
rectangle = patches.Rectangle((x1, y1), x2 - x1, y2 - y1, linewidth=1.5, edgecolor=color, facecolor="none")
axis.add_patch(rectangle)
axis.text(x1, y1, region_type, color="white", fontsize=8, backgroundcolor=color, verticalalignment="top")
axis.axis("off")
plt.show()
Dokumen multi-halaman dapat diparsing secara bersama dalam satu langkah forward dengan meneruskan semua gambar halaman secara bersamaan. Tambahkan satu blok gambar per halaman ke dalam pesan agar model memproses semua halaman sebagai dokumen yang berkelanjutan.
from transformers import AutoProcessor, AutoModelForImageTextToText
model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
page1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
page2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg"
messages = [
{
"role": "user",
"content": [{"type": "image", "url": page} for page in [page1, page2]]
+ [{"type": "text", "text": "Multi page parsing."}],
}
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
processor_kwargs={"crop_to_patches": False},
).to(model.device, model.dtype)
output = model.generate(
**inputs,
no_repeat_ngram_window_size=1024, # default: 128, larger window size recommended for long documents
)
processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
# <PAGE>image [382, 87, 489, 174]\ntitle [333, 201, 556, 230]R&D QUALITY IMPROVEMENT\nSUGGESTION/SCLUTION FORM...
# All bounding boxes are in (x1, y1, x2, y2) format with coordinates normalized to [0, 999]UnlimitedOcrConfig
kelas transformers.UnlimitedOcrConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneimage_token_id: int = 128815tie_word_embeddings: bool = False )
Parameter
- vision_config (
dictatauUnlimitedOcrVisionConfig, opsional) — Konfigurasi untuk encoder visual. Defaultnya adalahUnlimitedOcrVisionConfig(). - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari text backbone. - image_token_id (
int, opsional, default128815) — Indeks token gambar yang digunakan sebagai placeholder untuk gambar input. - tie_word_embeddings (
bool, opsional, defaultFalse) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnlimitedOcrModel. Kelas ini digunakan untuk membuat instans model Unlimited Ocr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari baidu/Unlimited-OCR
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
UnlimitedOcrTextConfig
kelas transformers.UnlimitedOcrTextConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 129280hidden_size: int = 1280intermediate_size: int = 6848num_hidden_layers: int = 12num_attention_heads: int = 10num_key_value_heads: int | None = 10hidden_act: str = 'silu'max_position_embeddings: int = 32768initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1pretraining_tp: int | None = 1tie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | None = 0.0mlp_bias: bool = Falsehead_dim: int | None = Nonen_group: int | None = 1n_routed_experts: int = 64output_router_logits: bool = Falsen_shared_experts: int = 2routed_scaling_factor: float = 1.0topk_group: int | None = 1topk_method: str | None = 'greedy'num_experts_per_tok: int | None = 6moe_intermediate_size: int = 896mlp_layer_types: list[str] | None = Nonelayer_types: list[str] | None = Nonesliding_window: int | None = 128 )
Parameter
- vocab_size (
int, opsional, default129280) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default1280) — Dimensi dari representasi tersembunyi. - intermediate_size (
int, opsional, default6848) — Dimensi representasi MLP. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default10) — Jumlah attention heads untuk setiap lapisan attention di decoder Transformer. - num_key_value_heads (
int, opsional, default10) — Ini adalah jumlah key_value heads yang harus digunakan untuk mengimplementasikan Grouped Query Attention. Jikanum_key_value_heads=num_attention_heads, model akan menggunakan Multi Head Attention (MHA), jikanum_key_value_heads=1model akan menggunakan Multi Query Attention (MQA), selain itu GQA yang digunakan. Saat mengkonversi checkpoint multi-head menjadi checkpoint GQA, setiap group key dan value head harus dibangun dengan meanpooling semua head asli dalam grup tersebut. Untuk detail lebih lanjut, lihat paper ini. Jika tidak ditentukan, akan default kenum_attention_heads. - hidden_act (
str, opsional, defaultnyasilu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - max_position_embeddings (
int, opsional, default32768) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - rms_norm_eps (
float, opsional, defaultnya1e-06) — Epsilon yang digunakan oleh lapisan normalisasi rms. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default0) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional, default1) — ID token yang digunakan untuk end-of-stream dalam kosakata. - pretraining_tp (
int, opsional, default1) — Fitur eksperimental. Rank tensor parallelism yang digunakan selama pretraining. Silakan lihat dokumen ini untuk memahaminya lebih lanjut. Nilai ini diperlukan untuk memastikan reproduktibilitas hasil pretraining secara persis. Silakan lihat isu ini. - tie_word_embeddings (
bool, opsional, defaultFalse) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], opsional) — Kamus yang berisi parameter konfigurasi untuk embedding RoPE. Kamus tersebut harus berisi nilai untukrope_thetadan secara opsional parameter yang digunakan untuk penskalaan jika Anda ingin menggunakan RoPE denganmax_position_embeddingsyang lebih panjang. - attention_bias (
bool, opsional, defaultFalse) — Apakah akan menggunakan bias pada lapisan proyeksi query, key, value, dan output selama self-attention. - attention_dropout (
float, opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - mlp_bias (
bool, opsional, defaultFalse) — Apakah akan menggunakan bias pada lapisan up_proj, down_proj, dan gate_proj di dalam lapisan MLP. - head_dim (
int, opsional) — Dimensi head perhatian. Jika None, nilainya akan secara default menjadi hidden_size // num_attention_heads - n_group (
int, opsional) — Jumlah grup untuk perutean top-k pakar yang dikelompokkan. - n_routed_experts (
int, opsional, default64) — Jumlah expert yang dirutekan. - output_router_logits (
bool, opsional, defaultFalse) — Apakah logits router harus dikembalikan oleh model. Mengaktifkan ini juga akan memungkinkan model untuk mengoutput loss tambahan, termasuk load balancing loss dan router z-loss. - n_shared_experts (
int, opsional, defaultnya2) — Jumlah shared experts. - routed_scaling_factor (
float, opsional, default1.0) — Faktor penskalaan untuk pakar yang di-rutekan. - topk_group (
int, opsional, default1) — Jumlah grup yang dipilih untuk setiap token (untuk setiap token, memastikan pakar yang dipilih hanya berada di dalamtopk_groupgrup). - topk_method (
str, opsional, defaultnya"greedy") — Metode untuk memilih top-k pakar di lapisan MoE. - num_experts_per_tok (
int, opsional, default6) — Jumlah expert yang akan menerima setiap token. Ini adalah nilai top-k untuk token-choice routing. - moe_intermediate_size (
int, opsional, default896) — Ukuran intermediate dari MLP expert yang di-rutekan. - mlp_layer_types (
list[str], opsional) — Tipe MLP ("dense"atau"sparse") untuk setiap lapisan decoder, misalnya["dense", "sparse", "sparse", ...]. - layer_types (
list[str], opsional) — Jenis Attention untuk setiap layer decoder. Default-nya adalah"reference_sliding_attention"di setiap layer. - sliding_window (
int, opsional, default128) — Ukuran sliding window untuk sliding window attention referensi. Jika diatur, setiap token akan memperhatikansliding_windowterakhir serta semua token gambar dan prompt.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnlimitedOcrModel. Kelas ini digunakan untuk membuat instans model Unlimited Ocr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari baidu/Unlimited-OCR
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
UnlimitedOcrVisionConfig
kelas transformers.UnlimitedOcrVisionConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonesam_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneencoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )
Parameter
- sam_config (
dictatauUnlimitedOcrSamVisionConfig, opsional) — Konfigurasi untuk encoder visual SAM. Defaultnya adalahUnlimitedOcrSamVisionConfig(). - encoder_config (
dictatauUnlimitedOcrVisionEncoderConfig, opsional) — Konfigurasi untuk vision encoder. Defaultnya adalahUnlimitedOcrVisionEncoderConfig().
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnlimitedOcrModel. Kelas ini digunakan untuk membuat instans model Unlimited Ocr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari baidu/Unlimited-OCR
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
UnlimitedOcrVisionEncoderConfig
kelas transformers.UnlimitedOcrVisionEncoderConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1024intermediate_size: int = 4096num_hidden_layers: int = 24num_attention_heads: int = 16num_channels: int = 3image_size: int | list[int] | tuple[int, int] | None = 224patch_size: int | list[int] | tuple[int, int] | None = 14hidden_act: str = 'quick_gelu'layer_norm_eps: float = 1e-05attention_dropout: int | float | None = 0.0initializer_range: float = 0.02initializer_factor: float = 1.0 )
Parameter
- hidden_size (
int, opsional, default1024) — Dimensi dari representasi tersembunyi. - intermediate_size (
int, opsional, default4096) — Dimensi representasi MLP. - num_hidden_layers (
int, opsional, default24) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default16) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - num_channels (
int, opsional, defaultnya3) — Jumlah saluran input. - image_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya224) — Ukuran (resolusi) dari setiap gambar. - patch_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya14) — Ukuran (resolusi) dari setiap patch. - hidden_act (
str, opsional, defaultnyaquick_gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - layer_norm_eps (
float, opsional, defaultnya1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - attention_dropout (
Union[int, float], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - initializer_factor (
float, opsional, default1.0) — Faktor untuk menginisialisasi semua matriks bobot (sebaiknya dipertahankan pada 1, digunakan secara internal untuk pengujian inisialisasi).
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnlimitedOcrModel. Kelas ini digunakan untuk membuat instans model Unlimited Ocr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari baidu/Unlimited-OCR
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
UnlimitedOcrSamVisionConfig
kelas transformers.UnlimitedOcrSamVisionConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 768output_channels: int = 256num_hidden_layers: int = 12num_attention_heads: int = 12num_channels: int = 3image_size: int | list[int] | tuple[int, int] = 1024patch_size: int | list[int] | tuple[int, int] = 16hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06attention_dropout: float | int = 0.0initializer_range: float = 1e-10qkv_bias: bool = Trueuse_abs_pos: bool = Trueuse_rel_pos: bool = Truewindow_size: int = 14global_attn_indexes: list[int] | tuple[int, ...] = (2, 5, 8, 11)mlp_dim: int = 3072downsample_channels: list[int] | tuple[int, ...] = (512, 1024) )
Parameter
- hidden_size (
int, opsional, default768) — Dimensi dari representasi tersembunyi. - output_channels (
int, opsional, default 256) — Dimensi dari saluran output di Patch Encoder. - num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - num_channels (
int, opsional, defaultnya3) — Jumlah saluran input. - image_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya1024) — Ukuran (resolusi) dari setiap gambar. - patch_size (
Union[int, list[int], tuple[int, int]], opsional, defaultnya16) — Ukuran (resolusi) dari setiap patch. - hidden_act (
str, opsional, defaultnyagelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - layer_norm_eps (
float, opsional, defaultnya1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - attention_dropout (
Union[float, int], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - initializer_range (
float, opsional, defaultnya1e-10) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - qkv_bias (
bool, opsional, defaultnyaTrue) — Apakah akan menambahkan bias ke queries, keys, dan values. - use_abs_pos (
bool, opsional, defaultnyaTrue) — Apakah akan menggunakan penanam posisi absolut. - use_rel_pos (
bool, opsional, defaultTrue) — Apakah akan menggunakan relative position embedding. - window_size (
int, opsional, default 14) — Ukuran jendela untuk posisi relatif. - global_attn_indexes (
list[int], opsional, default[2, 5, 8, 11]) — Indeks dari lapisan global attention. - mlp_dim (
int, opsional, default 3072) — Dimensi dari lapisan MLP dalam encoder Transformer. - downsample_channels (
list[int], opsional, default(512, 1024)) — Dimensi channel untuk lapisan neck downsampling multi-skala.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari UnlimitedOcrModel. Kelas ini digunakan untuk membuat instans model Unlimited Ocr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari baidu/Unlimited-OCR
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
UnlimitedOcrImageProcessor
kelas transformers.UnlimitedOcrImageProcessor
< source >( **kwargs: *<class 'transformers.models.unlimited_ocr.image_processing_unlimited_ocr.UnlimitedOcrImageProcessorKwargs'> )
Parameter
- do_convert_rgb (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengkonversi gambar ke RGB. - do_resize (
bool, kwargs, opsional, defaultTrue) — Apakah akan mengubah ukuran gambar. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, defaultnya{'height' -- 1024, 'width': 1024}): Menggambarkan dimensi input maksimum ke model. - default_to_square (
bool, kwargs, opsional, defaultnyaTrue) — Apakah akan menggunakan gambar persegi sebagai default saat melakukan resize, jika size berupa int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran gambar keluaran setelah menerapkancenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, defaultnya3) — Filter resampling yang digunakan jika mengubah ukuran gambar. Ini bisa berupa salah satu enumPILImageResampling. Hanya berpengaruh jikado_resizediatur keTrue. - do_rescale (
bool, kwargs, opsional, defaultTrue) — Apakah akan melakukan penskalaan ulang pada gambar. - rescale_factor (
float, kwargs, opsional, default0.00392156862745098) — Faktor rescale untuk menskalakan ulang gambar jikado_rescalediatur keTrue. - do_normalize (
bool, kwargs, opsional, defaultTrue) — Apakah akan menormalisasi gambar. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.5, 0.5, 0.5]) — Rata-rata gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, opsional, defaultnya[0.5, 0.5, 0.5]) — Standar deviasi gambar yang digunakan untuk normalisasi. Hanya berpengaruh jikado_normalizediatur keTrue. - do_pad (
bool, kwargs, opsional) — Apakah akan melakukan padding pada gambar. Padding dilakukan ke ukuran terbesar dalam batch atau ke ukuran persegi tetap per gambar. Strategi padding yang tepat bergantung pada model. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Ukuran dalam{"height": int, "width" int}untuk melakukan padding pada gambar. Harus lebih besar dari ukuran gambar mana pun yang disediakan untuk pra-pemrosesan. Jikapad_sizetidak disediakan, gambar akan di-pad hingga tinggi dan lebar terbesar dalam batch. Diterapkan hanya ketikado_pad=True. - do_center_crop (
bool, kwargs, opsional) — Apakah akan melakukan center crop pada gambar. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — HanyaChannelDimension.FIRSTyang didukung. Ditambahkan untuk kompatibilitas dengan prosesor lambat. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, opsional) — Format dimensi channel untuk gambar input. Jika tidak diset, format dimensi channel akan disimpulkan dari gambar input. Bisa berupa salah satu dari:"channels_first"atauChannelDimension.FIRST: gambar dalam format (num_channels, height, width)."channels_last"atauChannelDimension.LAST: gambar dalam format (height, width, num_channels)."none"atauChannelDimension.NONE: gambar dalam format (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Perangkat untuk memproses video. Jika tidak disetel, perangkat akan disimpulkan dari video input. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Mengembalikan tensor bertumpuk jika diset ke'pt', selain itu mengembalikan daftar tensor. - disable_grouping (
bool, kwargs, opsional) — Apakah akan menonaktifkan pengelompokan gambar berdasarkan ukuran untuk memprosesnya secara individual dan bukan dalam batch. Jika None, akan diatur ke True jika gambar berada di CPU, dan False selain itu. Pilihan ini didasarkan pada pengamatan empiris, seperti yang dijelaskan di sini: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, opsional) — Jumlah token gambar yang akan digunakan untuk setiap gambar dalam input. Ditambahkan untuk kompatibilitas mundur, tetapi ini seharusnya diatur sebagai atribut prosesor pada model-model mendatang. - crop_to_patches (
bool, kwargs, opsional, defaultTrue) — Apakah akan memotong gambar menjadi patch. Dapat ditimpa oleh parametercrop_to_patchespada metodepreprocess. - min_patches (
int, kwargs, opsional, default2) — Jumlah minimum patch yang akan diekstrak dari gambar. Hanya berpengaruh jikacrop_to_patchesdiatur keTrue. Dapat ditimpa oleh parametermin_patchespada metodepreprocess. - max_patches (
int, kwargs, opsional, default32) — Jumlah maksimum patch yang akan diekstrak dari gambar. Hanya berpengaruh jikacrop_to_patchesdiatur keTrue. Dapat ditimpa oleh parametermax_patchespada metodepreprocess. - tile_size (
int, kwargs, opsional, default640) — Ukuran setiap tile lokal. Harus sesuai dengan ukuran query embedding model. - background_color (
list[int], kwargs, opsional, defaultnya[127, 127, 127]) — Warna latar belakang untuk padding. - maximum_pad_value (
int, kwargs, opsional, default640) — Jikacrop_to_patchesadalahFalsedanmax(size.height, size.width)lebih kecil dari atau sama dengan nilai ini, citra akan di-resize langsung menjadi persegi dengan ukuranmax(size.height, size.width)tanpa mempertahankan rasio aspek. Sebaliknya, citra akan di-resize dengan mempertahankan rasio aspek, kemudian di-pad menjadi persegi denganbackground_color.
Membangun pemroses gambar UnlimitedOcrImageProcessor.
crop_image_to_patches
< source >( images: torch.Tensormin_patches: intmax_patches: inttile_size: intresample: PIL.Image.Resampling | None = None ) → tuple[torch.Tensor, int]
Parameter
- images (
torch.Tensor) — Gambar yang akan dipotong, bentuk(batch, channels, height, width). - min_patches (
int) — Jumlah minimum patch. - max_patches (
int) — Jumlah maksimum patch. - tile_size (
int) — Ukuran setiap tile. - resample (
PILImageResampling, opsional) — Filter resampling untuk mengubah ukuran.
Mengembalikan
tuple[torch.Tensor, int]
Patch bertumpuk (batch, num_patches, channels, tile_size, tile_size)
dan jumlah patch per gambar.
Crop gambar batched menjadi patch berdasarkan penataan optimal.
Mengembalikan jumlah patch gambar untuk ukuran gambar tertentu (1 patch global + patch lokal).
pad_to_square
< source >( images: torch.Tensorbackground_color: int | tuple[int, int, int] = 0 ) → torch.Tensor
Parameter
- images (
torch.Tensor) — Gambar yang akan di-pad. Bentuk: (batch_size, num_channels, height, width) atau (num_channels, height, width). - background_color (
intatautuple[int, int, int], opsional, default 0) — Warna yang digunakan untuk padding. Bisa berupa bilangan bulat untuk satu channel atau tuple bilangan bulat yang merepresentasikan gambar multi-channel. Jika diberikan sebagai bilangan bulat dalam mode multi-channel, nilainya akan default ke0pada channel berikutnya.
Mengembalikan
torch.Tensor
Gambar yang telah di-*padding*.
Menambahkan padding pada gambar menjadi bentuk persegi berdasarkan sisi terpanjang.
UnlimitedOcrProcessor
kelas transformers.UnlimitedOcrProcessor
< source >( image_processor = Nonetokenizer = Nonechat_template = Nonepatch_size = 16downsample_ratio = 4**kwargs )
Parameter
- image_processor (
UnlimitedOcrImageProcessor) — Image processor adalah input yang wajib. - tokenizer (
tokenizer_class) — Tokenizer adalah input yang wajib. - chat_template (
str) — Template Jinja untuk mengubah daftar pesan dalam chat menjadi string yang dapat ditokenisasi. - patch_size (
int, opsional, default16) — Ukuran patch yang digunakan oleh vision encoder (ukuran patch embedding SAM ViT). - downsample_ratio (
int, opsional, defaultnya4) — Rasio downsampling yang diterapkan setelah vision encoder.
Membangun UnlimitedOcrProcessor yang membungkus image processor dan tokenizer menjadi satu processor.
UnlimitedOcrProcessor menyediakan semua fungsionalitas dari UnlimitedOcrImageProcessor dan tokenizer_class. Lihat ~UnlimitedOcrImageProcessor dan ~tokenizer_class untuk informasi lebih lanjut.
batch_decode
< source >( *argsreturn_detections: bool = False**kwargs ) → list[str] or tuple[list[str], list[list[dict]]]
Parameter
- return_detections (
bool, opsional, defaultFalse) — Apakah akan mengembalikan juga deteksi layout yang diurai dari teks hasil decoding.
Mengembalikan
list[str] atau tuple[list[str], list[list[dict]]]
Teks yang telah didekode. Jika return_detections adalah True,
sebuah tuple berisi teks yang didekode dan deteksi dari setiap urutan, di mana setiap deteksi adalah sebuah dictionary
dengan kunci region_type, box dan text. Kotak dalam format [x1, y1, x2, y2] dengan koordinat
dinormalisasi ke [0, 999].
Metode ini meneruskan semua argumennya ke batch_decode() dari PreTrainedTokenizer. Silakan merujuk ke docstring metode ini untuk informasi lebih lanjut.
decode
< source >( *argsreturn_detections: bool = False**kwargs ) → str or tuple[str, list[dict]]
Parameter
- return_detections (
bool, opsional, defaultFalse) — Apakah akan mengembalikan juga deteksi layout yang diurai dari teks hasil decoding.
Mengembalikan
str atau tuple[str, list[dict]]
Teks yang telah didekode. Jika return_detections bernilai True, hasilnya berupa tuple yang berisi teks terdekode dan daftar deteksi, di mana setiap deteksi adalah dictionary dengan kunci region_type,
box, dan text. Kotak menggunakan format [x1, y1, x2, y2] dengan koordinat yang dinormalisasi ke rentang [0, 999].
Metode ini meneruskan semua argumennya ke decode() dari PreTrainedTokenizer. Silakan lihat docstring dari metode ini untuk informasi lebih lanjut.
UnlimitedOcrPreTrainedModel
kelas transformers.UnlimitedOcrPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Parameter
- config (PreTrainedConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
UnlimitedOcrTextPreTrainedModel
kelas transformers.UnlimitedOcrTextPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Parameter
- config (PreTrainedConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
UnlimitedOcrTextModel
kelas transformers.UnlimitedOcrTextModel
< source >( config: UnlimitedOcrTextConfig )
Parameter
- config (UnlimitedOcrTextConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Teks OCR Unlimited polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
MoeModelOutputWithPast atau tuple(torch.Tensor)
A MoeModelOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (UnlimitedOcrConfig) dan input.
Metode forward dari UnlimitedOcrTextModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention, dan secara opsional jika
config.is_encoder_decoder=Truedi blok cross-attention) yang dapat digunakan (lihat inputpast_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
router_logits (
tuple(torch.Tensor), opsional, dikembalikan ketikaoutput_router_probs=Truedanconfig.add_router_probs=Truediteruskan atau ketikaconfig.output_router_probs=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, sequence_length, num_experts).Logit router mentah (setelah softmax) yang dihitung oleh router MoE; istilah-istilah ini digunakan untuk menghitung auxiliary loss pada model Mixture of Experts.
UnlimitedOcrVisionModel
kelas transformers.UnlimitedOcrVisionModel
< source >( config: UnlimitedOcrVisionConfig )
Parameter
- config (UnlimitedOcrVisionConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model visi yang mengodekan gambar terlebih dahulu dengan SAM, diikuti oleh model tambahan (CLIP).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)
Parameter
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan UnlimitedOcrImageProcessor. Lihat UnlimitedOcrImageProcessor.call() untuk detailnya (UnlimitedOcrProcessor menggunakan UnlimitedOcrImageProcessor untuk memproses gambar).
Mengembalikan
BaseModelOutput atau tuple(torch.Tensor)
A BaseModelOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (UnlimitedOcrConfig) dan input.
Metode forward dari UnlimitedOcrVisionModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> import torch
>>> from transformers import AutoConfig, AutoImageProcessor, AutoModel
>>> from transformers.image_utils import load_image
>>> model_id = "baidu/Unlimited-OCR"
>>> config = AutoConfig.from_pretrained(model_id)
>>> model = AutoModel.from_pretrained(model_id, config=config.vision_config, device_map="auto")
>>> image_processor = AutoImageProcessor.from_pretrained(model_id)
>>> image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg")
>>> inputs = image_processor(images=image, return_tensors="pt").to(model.device, model.dtype)
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Patch tokens without class tokens (batch_size, height * width, vision_hidden_size + sam_hidden_size)
>>> patch_tokens = outputs.last_hidden_stateUnlimitedOcrModel
kelas transformers.UnlimitedOcrModel
< source >( config: UnlimitedOcrConfig )
Parameter
- config (UnlimitedOcrConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model UnlimitedOcr yang terdiri dari vision backbone dan model bahasa.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_local: typing.Optional[torch.Tensor] = Nonenum_local_patches: list[int] | None = Nonepatches_grid: list[list[int]] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → UnlimitedOcrModelOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan UnlimitedOcrImageProcessor. Lihat UnlimitedOcrImageProcessor.call() untuk detailnya (UnlimitedOcrProcessor menggunakan UnlimitedOcrImageProcessor untuk memproses gambar). - pixel_values_local (
torch.Tensor, opsional) — Nilai piksel patch lokal dengan bentuk(total_patches, 3, H, W). - num_local_patches (
list[int], opsional) — Jumlah patch lokal per gambar dalam batch. - patches_grid (
list[list[int]], opsional) — Grid patch(num_columns, num_rows)per gambar. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opsional) — Dict di mana kuncinya adalah modalitas yang didukung dan nilainya adalah output terenkod untuk modalitas tersebut. Setiap output terenkod adalah tuple yang terdiri dari (pooler_output, opsional:last_hidden_states, opsional:hidden_states, opsional:attentions)pooler_outputdengan bentuk(batch_size, sequence_length, hidden_size), opsional) adalah rangkaian fitur multimodal dari encoder yang digabungkan ke dalam embedding teks.
Mengembalikan
UnlimitedOcrModelOutputWithPast atau tuple(torch.Tensor)
UnlimitedOcrModelOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (UnlimitedOcrConfig) dan input.
Metode forward dari UnlimitedOcrModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.Jika
past_key_valuesdigunakan, hanya hidden-state terakhir dari sekuens dengan bentuk(batch_size, 1, hidden_size)yang dioutput.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
image_hidden_states (
torch.Tensor, opsional) — Sebuahtorch.Tensorberukuran(batch_size, num_images, sequence_length, hidden_size). image_hidden_states dari model yang dihasilkan oleh vision encoder dan setelah memproyeksikan hidden state terakhir.router_logits (
tuple[torch.Tensor], opsional, dikembalikan ketikaoutput_router_logits=Truedilewatkan atau ketikaconfig.add_router_probs=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, sequence_length, num_experts).Logit router dari model, berguna untuk menghitung loss tambahan untuk model Mixture of Experts.
UnlimitedOcrForConditionalGeneration
kelas transformers.UnlimitedOcrForConditionalGeneration
< source >( config: UnlimitedOcrConfig )
Parameter
- config (UnlimitedOcrConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Unlimited Ocr untuk menghasilkan token yang dikondisikan pada modalitas lain (misalnya, generasi dari gambar-teks ke teks).
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonepixel_values_local: typing.Optional[torch.Tensor] = Nonenum_local_patches: list[int] | None = Nonepatches_grid: list[list[int]] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → UnlimitedOcrCausalLMOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- pixel_values (
torch.Tensordengan bentuk(batch_size, num_channels, image_size, image_size), opsional) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan UnlimitedOcrImageProcessor. Lihat UnlimitedOcrImageProcessor.call() untuk detailnya (UnlimitedOcrProcessor menggunakan UnlimitedOcrImageProcessor untuk memproses gambar). - pixel_values_local (
torch.Tensor, opsional) — Nilai piksel patch lokal dengan bentuk(total_patches, 3, H, W). - num_local_patches (
list[int], opsional) — Jumlah patch lokal per gambar dalam batch. - patches_grid (
list[list[int]], opsional) — Grid patch(num_columns, num_rows)per gambar. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam[0, ..., config.vocab_size]atau -100 (lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size]. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opsional, default0) — Jika berupaint, hitung logits untuklogits_to_keeptoken terakhir. Jika0, hitung logits untuk semuainput_ids(kasus khusus). Hanya logits token terakhir yang diperlukan untuk generasi, dan menghitungnya hanya untuk token tersebut dapat menghemat memori, yang menjadi cukup signifikan untuk urutan panjang atau ukuran kosakata besar. Jika berupatorch.Tensor, harus 1D yang sesuai dengan indeks yang akan dipertahankan pada dimensi panjang urutan. Ini berguna saat menggunakan format tensor terpadu (satu dimensi untuk batch dan panjang urutan). - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opsional) — Dict di mana kuncinya adalah modalitas yang didukung dan nilainya adalah output terenkod untuk modalitas tersebut. Setiap output terenkod adalah tuple yang terdiri dari (pooler_output, opsional:last_hidden_states, opsional:hidden_states, opsional:attentions)pooler_outputdengan bentuk(batch_size, sequence_length, hidden_size), opsional) adalah rangkaian fitur multimodal dari encoder yang digabungkan ke dalam embedding teks.
Mengembalikan
UnlimitedOcrCausalLMOutputWithPast atau tuple(torch.Tensor)
UnlimitedOcrCausalLMOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (UnlimitedOcrConfig) dan input.
Metode forward dari UnlimitedOcrForConditionalGeneration menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple[torch.Tensor], opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
image_hidden_states (
torch.Tensor, opsional) — Sebuahtorch.Tensorberukuran (batch_size * num_patches, num_images, sequence_length, hidden_size)`. image_hidden_states dari model yang dihasilkan oleh vision encoder dan setelah memproyeksikan hidden state terakhir.router_logits (
tuple[torch.Tensor], opsional, dikembalikan ketikaoutput_router_logits=Truedilewatkan atau ketikaconfig.add_router_probs=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, sequence_length, num_experts).Logit router dari model, berguna untuk menghitung loss tambahan untuk model Mixture of Experts.
Contoh OCR satu halaman:
>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
>>> processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
>>> image = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
>>> messages = [
... {
... "role": "user",
... "content": [{"type": "image", "url": image}, {"type": "text", "text": "document parsing."}],
... }
... ]
>>> inputs = processor.apply_chat_template(
... messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt"
... ).to(model.device, model.dtype)
>>> output = model.generate(**inputs)
>>> processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
>>> # image [383, 87, 497, 171]\ntext [333, 201, 558, 230]R&D QUALITY IMPROVEMENT\nSUGGESTION/SOLUTION FORM...Contoh OCR multi-halaman:
>>> from transformers import AutoProcessor, AutoModelForImageTextToText
>>> model = AutoModelForImageTextToText.from_pretrained("baidu/Unlimited-OCR", device_map="auto")
>>> processor = AutoProcessor.from_pretrained("baidu/Unlimited-OCR")
>>> page1 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_suggestion_form.jpg"
>>> page2 = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/ocr_receipt.jpeg"
>>> messages = [
... {
... "role": "user",
... "content": [{"type": "image", "url": page} for page in [page1, page2]]
... + [{"type": "text", "text": "Multi page parsing."}],
... }
... ]
>>> inputs = processor.apply_chat_template(
... messages,
... add_generation_prompt=True,
... tokenize=True,
... return_dict=True,
... return_tensors="pt",
... processor_kwargs={"crop_to_patches": False},
... ).to(model.device, model.dtype)
>>> output = model.generate(
... **inputs,
... no_repeat_ngram_window_size=1024,
... )
>>> processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
>>> # <PAGE>image [382, 87, 489, 174]\ntitle [333, 201, 556, 230]R&D QUALITY IMPROVEMENT\nSUGGESTION/SCLUTION FORM...